Default bold ink #c96b4a -> #ee928c

Owner default change (2026-09-23): the factory strong-color token
moves to the softer coral. The factory lives in the stylesheet
token (both theme blocks in globals.css) - settings' boldColor:null
means "factory" by design, so no record/schema change. The settings
row hint + placeholder follow, plus the placeholder test and two
comments that cited the old literal.

Live-verified: unset boldColor renders rgb(238,146,140) (#ee928c) on
the real <strong>; dialog hint reads "Empty = #ee928c".
This commit is contained in:
amosblomqvist
2026-09-23 22:05:58 +03:00
parent fb72b4fee3
commit f7a04f6c02
5 changed files with 7 additions and 7 deletions
+2 -2
View File
@@ -39,7 +39,7 @@
--input: #434343; --input: #434343;
--ring: #8d8d8d; --ring: #8d8d8d;
/* Emphasis coloring in teaching prose — ready for the settings UI. */ /* Emphasis coloring in teaching prose — ready for the settings UI. */
--lh-ink-strong: #c96b4a; --lh-ink-strong: #ee928c;
--lh-ink-italic: #6fa9d6; --lh-ink-italic: #6fa9d6;
/* THE READING SIZE = the ladder's 16px rung (--text-lg). Can't be /* THE READING SIZE = the ladder's 16px rung (--text-lg). Can't be
var()-linked: @theme inline inlines literals into utilities without var()-linked: @theme inline inlines literals into utilities without
@@ -73,7 +73,7 @@
--border: #434343; --border: #434343;
--input: #434343; --input: #434343;
--ring: #8d8d8d; --ring: #8d8d8d;
--lh-ink-strong: #c96b4a; --lh-ink-strong: #ee928c;
--lh-ink-italic: #6fa9d6; --lh-ink-italic: #6fa9d6;
/* THE READING SIZE = the ladder's 16px rung (--text-lg). Can't be /* THE READING SIZE = the ladder's 16px rung (--text-lg). Can't be
var()-linked: @theme inline inlines literals into utilities without var()-linked: @theme inline inlines literals into utilities without
+1 -1
View File
@@ -341,7 +341,7 @@ export function MathDisplay(props: ComponentProps<"span"> & ExtraProps) {
/** Bold as the REAL element (appearance fix, 2026-09-23): streamdown's /** Bold as the REAL element (appearance fix, 2026-09-23): streamdown's
* default `strong` renders `<span class="font-semibold" data-streamdown= * default `strong` renders `<span class="font-semibold" data-streamdown=
* "strong">` — and `.lh-prose :where(strong, b)` matches strong/b * "strong">` — and `.lh-prose :where(strong, b)` matches strong/b
* ELEMENTS, so neither the factory ink (#c96b4a) nor a settings * ELEMENTS, so neither the factory ink (#ee928c) nor a settings
* boldColor ever landed on bold text (italic worked: streamdown leaves * boldColor ever landed on bold text (italic worked: streamdown leaves
* `em` native). Rendering the semantic element restores screen-reader * `em` native). Rendering the semantic element restores screen-reader
* emphasis AND lets the designed token rule apply unmodified — color * emphasis AND lets the designed token rule apply unmodified — color
+2 -2
View File
@@ -116,10 +116,10 @@ export function AppearanceSection({
}} }}
/> />
</SettingsRow> </SettingsRow>
<SettingsRow label="Bold color" hint="Empty = #c96b4a" testid="row-bold-color"> <SettingsRow label="Bold color" hint="Empty = #ee928c" testid="row-bold-color">
<CommitInput <CommitInput
value={md?.boldColor ?? ""} value={md?.boldColor ?? ""}
placeholder="#c96b4a" placeholder="#ee928c"
ariaLabel="bold color" ariaLabel="bold color"
testid="input-bold-color" testid="input-bold-color"
onCommit={(v) => onSectionChange({ ...appearance, mdRendering: { ...md, boldColor: v === "" ? null : v } })} onCommit={(v) => onSectionChange({ ...appearance, mdRendering: { ...md, boldColor: v === "" ? null : v } })}
+1 -1
View File
@@ -219,7 +219,7 @@ describe("render — bold is the real <strong> (the dead Bold-color fix)", () =>
// data-streamdown="strong"> — and the app's ink token rule // data-streamdown="strong"> — and the app's ink token rule
// (.lh-prose :where(strong, b), globals.css) matches strong/b // (.lh-prose :where(strong, b), globals.css) matches strong/b
// ELEMENTS, so bold never took the --lh-ink-strong color (neither the // ELEMENTS, so bold never took the --lh-ink-strong color (neither the
// factory #c96b4a nor a settings boldColor). The mdComponents override // factory #ee928c nor a settings boldColor). The mdComponents override
// renders the semantic element. // renders the semantic element.
it("bold renders a real <strong> element inside .lh-prose", () => { it("bold renders a real <strong> element inside .lh-prose", () => {
const html = render("plain **bold** plain"); const html = render("plain **bold** plain");
+1 -1
View File
@@ -207,7 +207,7 @@ describe("AppearanceSection (thin SSR)", () => {
const html = renderToStaticMarkup(<AppearanceSection appearance={undefined} onSectionChange={() => {}} />); const html = renderToStaticMarkup(<AppearanceSection appearance={undefined} onSectionChange={() => {}} />);
assert.ok(html.includes(`placeholder="#141414"`)); assert.ok(html.includes(`placeholder="#141414"`));
assert.ok(html.includes(`placeholder="Source Sans 3"`)); assert.ok(html.includes(`placeholder="Source Sans 3"`));
assert.ok(html.includes(`placeholder="#c96b4a"`)); assert.ok(html.includes(`placeholder="#ee928c"`));
assert.ok(html.includes("16px")); assert.ok(html.includes("16px"));
}); });