fix(ui): harden download properties window

This commit is contained in:
NimBold
2026-08-06 07:08:29 +03:30
parent ee2448d084
commit 6f9a9e0638
15 changed files with 557 additions and 57 deletions
+191 -8
View File
@@ -574,6 +574,7 @@ html[data-list-density="relaxed"] {
.properties-window-shell {
--properties-header-surface: hsl(var(--surface-raised));
--properties-card-surface: hsl(var(--bg-input) / 0.42);
position: relative;
min-height: 100%;
overflow: hidden;
border: 1px solid hsl(var(--border-color));
@@ -586,6 +587,7 @@ html[data-list-density="relaxed"] {
height: 52px;
flex: 0 0 auto;
align-items: center;
justify-content: center;
padding: 0 18px;
direction: ltr;
border-bottom: 1px solid hsl(var(--border-color));
@@ -601,16 +603,12 @@ html[data-list-density="relaxed"] {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
white-space: nowrap;
}
.properties-window-shell--controls-left .properties-window-titlebar {
padding-left: calc(var(--window-control-reveal-offset, 88px) + 18px);
}
.properties-window-shell--controls-right .properties-window-titlebar {
justify-content: flex-end;
padding-right: calc(var(--window-control-reveal-offset, 88px) + 18px);
.properties-window-shell .properties-window-titlebar {
padding-inline: calc(var(--properties-window-control-rail-width, 60px) + 22px);
}
.properties-window-header {
@@ -850,6 +848,116 @@ html[data-list-density="relaxed"] {
white-space: nowrap;
}
.properties-window-tab-navigation {
display: flex;
min-width: 0;
flex: 0 0 auto;
align-items: center;
gap: 10px;
padding: 7px 16px;
border-bottom: 1px solid hsl(var(--border-modal));
background: hsl(var(--surface-raised));
}
.properties-window-tab-navigation--overflow .properties-window-tabs {
display: none;
}
.properties-window-tab-navigation--overflow .properties-window-tab-overflow {
display: flex;
}
.properties-window-tabs {
display: flex;
min-width: 0;
flex: 1 1 auto;
align-items: center;
gap: 6px;
overflow-x: auto;
scrollbar-width: none;
}
.properties-window-tabs::-webkit-scrollbar {
display: none;
}
.properties-window-tab {
display: inline-flex;
min-height: 38px;
flex: 0 0 auto;
align-items: center;
gap: 7px;
padding: 7px 12px;
border: 1px solid transparent;
border-radius: 9px;
color: hsl(var(--text-muted));
font-size: 12px;
font-weight: 650;
line-height: 1.2;
white-space: nowrap;
transition:
background-color 120ms ease,
border-color 120ms ease,
color 120ms ease,
transform 120ms ease;
}
.properties-window-tab:hover {
border-color: hsl(var(--border-modal));
background: hsl(var(--item-hover));
color: hsl(var(--text-primary));
}
.properties-window-tab[aria-selected="true"] {
border-color: hsl(var(--accent-color) / 0.34);
background: hsl(var(--accent-color) / 0.15);
color: hsl(var(--text-primary));
box-shadow: inset 0 0 0 1px hsl(var(--accent-color) / 0.08);
}
.properties-window-tab:focus-visible {
outline: 2px solid hsl(var(--accent-color) / 0.76);
outline-offset: 2px;
}
.properties-window-tab:active {
transform: scale(0.98);
}
.properties-window-tab-icon {
flex: 0 0 auto;
color: hsl(var(--accent-color));
}
.properties-window-tab-overflow {
display: none;
min-width: 0;
flex: 1 1 auto;
align-items: center;
gap: 8px;
color: hsl(var(--text-muted));
font-size: 12px;
font-weight: 650;
}
.properties-window-tab-overflow select {
min-width: 0;
flex: 1 1 auto;
min-height: 36px;
padding: 6px 10px;
border: 1px solid hsl(var(--border-modal));
border-radius: 8px;
background: hsl(var(--bg-input) / 0.55);
color: hsl(var(--text-primary));
font-size: 12px;
font-weight: 650;
}
.properties-window-tab-overflow select:focus-visible {
outline: 2px solid hsl(var(--accent-color) / 0.76);
outline-offset: 2px;
}
.properties-window-panel {
scrollbar-gutter: stable;
}
@@ -901,6 +1009,55 @@ html[data-list-density="relaxed"] {
vertical-align: middle;
}
.properties-url-card {
min-width: 0;
}
.properties-url-card-header {
display: flex;
min-width: 0;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.properties-url-toggle {
display: inline-flex;
min-height: 28px;
flex: 0 0 auto;
align-items: center;
gap: 5px;
padding: 4px 8px;
border-radius: 6px;
color: hsl(var(--accent-color));
font-size: 11px;
font-weight: 650;
}
.properties-url-toggle:hover {
background: hsl(var(--accent-color) / 0.1);
color: hsl(var(--text-primary));
}
.properties-url-toggle:focus-visible {
outline: 2px solid hsl(var(--accent-color) / 0.76);
outline-offset: 2px;
}
.properties-url-value {
max-width: 100%;
overflow-wrap: anywhere;
word-break: break-word;
}
.properties-url-value--collapsed {
display: -webkit-box;
max-height: calc(1.45em * 2);
overflow: hidden;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
@media (max-width: 720px) {
.properties-window-hero-top {
align-items: stretch;
@@ -925,6 +1082,20 @@ html[data-list-density="relaxed"] {
}
}
@media (max-width: 620px) {
.properties-window-tab-navigation {
padding-inline: 12px;
}
.properties-window-tabs {
display: none;
}
.properties-window-tab-overflow {
display: flex;
}
}
@media (max-width: 440px) {
.properties-window-header {
padding-inline: 14px;
@@ -950,6 +1121,14 @@ html[data-list-density="relaxed"] {
.properties-window-progress-fill {
transition: none;
}
.properties-window-tab {
transition: none;
}
.properties-window-tab:active {
transform: none;
}
}
.app-icon-button {
@@ -2430,7 +2609,7 @@ html[data-list-density="relaxed"] {
}
.window-controls {
position: fixed;
position: absolute;
top: 20px;
left: 22px;
right: auto;
@@ -2443,6 +2622,10 @@ html[data-list-density="relaxed"] {
pointer-events: auto;
}
.app-shell {
position: relative;
}
.app-shell--sidebar-right .window-controls {
left: auto;
right: 22px;