Skip to content

Carry a label text carrier's case onto the label caption - #3036

Merged
chubes4 merged 1 commit into
trunkfrom
fix/label-carrier-text-transform
Oct 18, 2026
Merged

chubes4 merged 1 commit into
trunkfrom
fix/label-carrier-text-transform

Conversation

@chubes4

@chubes4 chubes4 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Root cause

A form label often paints its text through an inner carrier: <label class="field"><span class="field__label">Name</span><input></label>. The presentation graph resolves the label caption's typography from that carrier (#2209), but the label carrier list TYPOGRAPHY_PROPERTIES left out text-transform. Only the button-caption list (CAPTION_PROPERTIES, #2786) carried case. A provider label that renders the caption directly therefore lost text-transform: uppercase. The same list drives inherited text for in-form copy, so copy that inherits its case from an ancestor lost it too.

text-transform is an inherited text property like the others, so it belongs in the one list. With it added, CAPTION_PROPERTIES is identical to TYPOGRAPHY_PROPERTIES and is removed.

Before / after

Fixture 75 (/contact, Jetpack-mapped contact form, 1440px), label caption:

source  NAME / EMAIL / SUBJECT / MESSAGE   text-transform: uppercase
trunk   Name / Email / Subject / Message   text-transform: none
branch  NAME / EMAIL / SUBJECT / MESSAGE   text-transform: uppercase

The presentation graph for that label now reports "text_transform":"uppercase". Field geometry is unchanged and still matches the source.

Coverage

tests/unit/form-label-carrier-case.php (new, 4 assertions; all 4 fail on trunk):

  • a label text carrier sets the caption case alongside its typography
  • the carrier's case wins over the label's own case for the text it paints
  • a conditional carrier case becomes a label variant
  • in-form copy inherits its case from the nearest declaring ancestor

Test plan

  • php tests/unit/form-label-carrier-case.php
  • Full composer test suite (612 commands)
  • composer topology-diff -- --baseline tools/topology-diff/baseline.json: topology matches the baseline
  • Studio import of fixture 75 with this change; contact labels measured in Chromium

Claude (Anthropic) via the Pi coding agent wrote the change and tests, and measured the before/after in a real browser. Finalized outside Homeboy (direct worktree run). Chris Huber directed the work.

@chubes4
chubes4 merged commit f4188db into trunk Oct 18, 2026
15 checks passed
@chubes4
chubes4 deleted the fix/label-carrier-text-transform branch October 18, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant