diff --git a/docker/frontend/src/Library.tsx b/docker/frontend/src/Library.tsx index fab3aa4..696fb13 100644 --- a/docker/frontend/src/Library.tsx +++ b/docker/frontend/src/Library.tsx @@ -1635,34 +1635,36 @@ export function Library() { angle — the next visit, the next scan and the studio all read it off the row, so it is never turned twice. Two buttons and not a dial: a quarter is the - only turn a photo is ever out by. */} + only turn a photo is ever out by. They sit on the + centre of the bar, over the middle of the picture + above them, because they are what the eye comes down + to after it; the score stays out at the edge. */} - {/* The frame's own score, and the only place one is given: the star that is lit is the score it has, and the star under the click is the score it gets — diff --git a/docker/frontend/src/styles/app.css b/docker/frontend/src/styles/app.css index 4bcfde6..dee6d69 100644 --- a/docker/frontend/src/styles/app.css +++ b/docker/frontend/src/styles/app.css @@ -1180,6 +1180,21 @@ button.hint:disabled { cursor: default; } .lib-root .adm-stage > .lib-noimg { flex: 1 1 auto; min-height: 0; aspect-ratio: auto; } .lib-root .adm-stage > .adm-meta, .lib-root .adm-stage > .chip-row { flex: 0 0 auto; } +/* The bar under the stage is four tracks — a free one to either side of the two + quarter-turns, so the pair lands on the picture's own centre whatever the + OPEN button and the stars happen to measure, and they stay at the ends they + belong to. Equal `1fr` either side is what does it; a spacer could not, since + the two end blocks are not the same width. */ +.lib-root .adm-stage > .chip-row { display: grid; grid-template-columns: 1fr auto auto 1fr; align-items: center; } +.lib-root .adm-stage > .chip-row > .btn { justify-self: start; } +.lib-root .adm-stage > .chip-row > .lib-stars { justify-self: end; } +/* Under ~700px of window the stage is narrower than those four need on one line, + and a grid would run the stars off the edge of it rather than wrap. It goes + back to the flex row it was — the lines it wraps to are centred under the + picture, so nothing slides off and the pair still sits in the middle. */ +@media (max-width: 700px) { + .lib-root .adm-stage > .chip-row { display: flex; justify-content: center; } +} /* All thumbs: the wall scrolls down inside the stage, and its own scrollbar on the right edge is what reaches the frames below. */ .lib-root .adm-grid { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding-right: 6px; } @@ -1212,6 +1227,10 @@ button.hint:disabled { cursor: default; } /* The views are a glyph each (a frame, a wall of thumbs), so the row stays a row when the window is narrow. */ .lib-icon { padding: 5px 8px; justify-content: center; } +/* The two quarter-turn buttons under the stage: a bigger glyph than a view icon, + so the padding grows with it — the target is what the thumb aims at, and these + are pressed far more often than a view is switched. */ +.chip.lib-turn { padding: 7px 12px; } /* A folder's own menu, on a right click. Fixed, so the tree's own scroll cannot clip it; the position is clamped to the window when it is drawn. Sized after a catalogue's own menu rather than after a page's: it hangs off a