feat(library & studio): add EXIF info bar, portrait frame panning, and multi-photo selection with Panorama/HDR context menu

This commit is contained in:
2026-10-07 10:44:59 +07:00
parent 7b836984fc
commit 3b4c49c41d
9 changed files with 196 additions and 49 deletions
+20 -2
View File
@@ -819,9 +819,22 @@ button.hint:disabled { cursor: default; }
color: var(--text-dim);
box-shadow: var(--shadow);
}
.stage .photo-meta-bar {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 4px 12px;
font-size: 11px;
font-family: var(--mono);
color: var(--muted);
letter-spacing: 0.03em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.stage .toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: center; }
/* The photo's own size, first in that row: monospaced so the digits do not
shuffle the buttons sideways while a crop is being dragged. */
.stage .toolbar .dims { font-family: var(--mono); white-space: nowrap; }
.err { color: var(--danger); font-size: 12px; max-width: 520px; text-align: center; }
@@ -1033,6 +1046,7 @@ button.hint:disabled { cursor: default; }
}
.adm-thumb:hover { border-color: var(--accent-line); }
.adm-thumb.on { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.adm-thumb.selected { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); background: var(--accent-soft); }
.adm-thumb img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.adm-thumb-cap { display: block; padding: 3px 6px; font-family: var(--mono); font-size: 10.5px; }
/* The three destinations sit on one line under the photo, each an independent
@@ -1087,6 +1101,10 @@ button.hint:disabled { cursor: default; }
background: var(--bg-elev);
padding: 10px;
}
.adm-card.selected {
border-color: var(--accent);
box-shadow: 0 0 0 2px var(--accent);
}
.adm-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-sm); background: var(--bg-sunken); }
/* A frame whose RAW carries no preview of its own: the tile stands in for the
picture and opens the file just the same. */