fix(settings): give Settings pills room and the outlined buttons' size

Theme and Timeline design pills sat 1px under their help text and, in
Relaxed, in a dark well at 12px/32px beside 13px/37px outlined buttons,
which read as off-centre. Under a help line they now sit 16px below it,
like the scheme choices, and in Settings take the buttons' type, height
and a hairline tray.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Lucas Winther
2026-10-20 04:24:53 +02:00
co-authored by Claude Opus 5.5
parent 3e3759b1eb
commit 9c22a85134
3 changed files with 52 additions and 1 deletions
+5 -1
View File
@@ -638,7 +638,11 @@ legend on the same baseline as "Next: …".
(interface, theme, scheme, urgency colours, default view, game order, timeline design, focus bar,
checklist group), Your own events and games, Backup (tiers plus a manual "Your backups" list), and
per-game Setup / Codes / About. Switching to another game keeps the open tab (2026-10-20, owner):
Codes in one game opens Codes in the next.
Codes in one game opens Codes in the next. Segmented pills under a help line sit 16px below it,
as the scheme choices do; flush against the text they read as part of the sentence. In Settings
the pills take the neighbouring outlined buttons' 13px type and 37px height, and in Relaxed a
hairline tray instead of the Checklist's dark well (2026-10-20, owner): a well among outlines
read as text floating off-centre in a hole.
- **Redeem codes (2026-10-18, owner).** A game's Codes tab lists the codes still to use first. A
code redeemed on every server the reader plays, or past its stated expiry, is greyed and struck
through in a "Redeemed or expired" section below, with its Redeemed box still there to undo. A
+25
View File
@@ -1896,6 +1896,31 @@ textarea {
flex-wrap: wrap;
margin-top: 16px;
}
/* Pills under an explanation get the scheme choices' breathing room; flush
against the text they read as part of the sentence. */
.settings-group .help + .segmented {
margin-top: 16px;
}
/* In Settings the pills sit beside outlined buttons and selects, so they take
those controls' type and height, and in Relaxed a hairline tray rather than
the dark well the Checklist's sort pills use: a well among outlines reads as
text floating in a hole. */
.settings-group .segmented button {
font-size: 13px;
line-height: 1.6;
padding: 7px 12px;
min-height: 0;
}
:root[data-interface="relaxed"] .settings-group .segmented {
background: transparent;
border: 1px solid var(--color-hairline);
border-radius: 8px;
}
:root[data-interface="relaxed"] .settings-group .segmented button {
padding: 4px 12px;
min-height: 0;
border-radius: 5px;
}
.scheme-option {
border: 1px solid var(--color-hairline);
padding: 10px 14px;
+22
View File
@@ -24,3 +24,25 @@ test("both interface choices, Custom schemes and routine disclosure are availabl
])
expect(html).toContain(label);
});
test("pills under a settings explanation sit as far below it as the scheme choices do", async () => {
const css = await Bun.file(
new URL("../src/client/redesign.css", import.meta.url),
).text();
const scheme = /\.scheme-choices\s*\{[^}]*margin-top:\s*(\d+px)/s.exec(
css,
)?.[1];
const pills =
/\.settings-group \.help \+ \.segmented\s*\{[^}]*margin-top:\s*(\d+px)/s.exec(
css,
)?.[1];
expect(scheme).toBe("16px");
expect(pills).toBe(scheme);
// And they take the outlined buttons' type and, in Relaxed, a hairline tray.
expect(css).toMatch(
/\.settings-group \.segmented button\s*\{[^}]*font-size: 13px/s,
);
expect(css).toMatch(
/:root\[data-interface="relaxed"\] \.settings-group \.segmented\s*\{[^}]*border: 1px solid var\(--color-hairline\)/s,
);
});