[fix](trx-frontend-http): fit spectrum bookmarks on smaller displays

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-18 23:54:15 +01:00
parent 43eb9a2292
commit fb6a27068b
2 changed files with 31 additions and 4 deletions
@@ -8830,6 +8830,29 @@ function updateSideBookmarkStack(container, bookmarks, colorMap) {
container.appendChild(createBookmarkChip(bm, colorMap, { sideStack: true })); container.appendChild(createBookmarkChip(bm, colorMap, { sideStack: true }));
} }
} }
const wrapEl = container.parentElement;
const wrapRect = wrapEl?.getBoundingClientRect?.();
const viewportWidth = Math.max(
document.documentElement?.clientWidth || 0,
window.innerWidth || 0,
);
const style = getComputedStyle(container);
const sideOffset = Math.abs(
parseFloat(container.classList.contains("spectrum-bookmark-side-left") ? style.left : style.right) || 0,
);
const sideWidth = parseFloat(style.width) || 0;
const requiredSpace = Math.max(sideOffset, sideWidth) + 8;
const fitsLeft = !wrapRect || wrapRect.left >= requiredSpace;
const fitsRight = !wrapRect || (viewportWidth - wrapRect.right) >= requiredSpace;
const sideFits = container.classList.contains("spectrum-bookmark-side-left")
? fitsLeft
: fitsRight;
if (!sideFits) {
container.classList.remove("bm-side-visible");
return;
}
container.classList.add("bm-side-visible"); container.classList.add("bm-side-visible");
} }
@@ -34,6 +34,9 @@
--card-base-max-width: 1280px; --card-base-max-width: 1280px;
--card-max-width: 1600px; --card-max-width: 1600px;
--card-bookmark-gutter: 4rem; --card-bookmark-gutter: 4rem;
--signal-visual-max-width: 67.5rem;
--spectrum-bookmark-side-width: 6.5rem;
--spectrum-bookmark-side-offset: 8.85rem;
} }
[data-theme="light"] { [data-theme="light"] {
@@ -629,7 +632,8 @@ small { color: var(--text-muted); }
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 0; gap: 0;
margin-bottom: 0.9rem; width: min(100%, var(--signal-visual-max-width));
margin: 0 auto 0.9rem;
} }
#signal-split-control { #signal-split-control {
position: absolute; position: absolute;
@@ -2949,7 +2953,7 @@ button:focus-visible, input:focus-visible, select:focus-visible {
top: calc(var(--spectrum-plot-height) / 2); top: calc(var(--spectrum-plot-height) / 2);
transform: translateY(-50%); transform: translateY(-50%);
z-index: 7; z-index: 7;
width: 7.25rem; width: var(--spectrum-bookmark-side-width);
display: none; display: none;
flex-direction: column; flex-direction: column;
gap: 0.28rem; gap: 0.28rem;
@@ -2958,11 +2962,11 @@ button:focus-visible, input:focus-visible, select:focus-visible {
display: flex; display: flex;
} }
.spectrum-bookmark-side-left { .spectrum-bookmark-side-left {
left: -10.15rem; left: calc(-1 * var(--spectrum-bookmark-side-offset));
align-items: flex-end; align-items: flex-end;
} }
.spectrum-bookmark-side-right { .spectrum-bookmark-side-right {
right: -10.15rem; right: calc(-1 * var(--spectrum-bookmark-side-offset));
align-items: flex-start; align-items: flex-start;
} }
.spectrum-bookmark-side .spectrum-bookmark-chip { .spectrum-bookmark-side .spectrum-bookmark-chip {