Record the appearance switch as a component, not just a mechanism - #23
Merged
Merged
Conversation
…mechanism §3 described what the theme switch does to a surface and never described the control. Read cold, the guide told you which half of the palette you would get and left the thing a person clicks to be invented per surface — which is what happened: tower-finder grew a two-state chip of its own before anyone noticed dash already had a three-state radiogroup. So §6 gains an entry for `.theme-switch`, and tokens.css gains its rules. The part worth writing down is not the styling, which is six declarations: it is the markup contract underneath it. The buttons hold a glyph and no text, so without an aria-label and a matching title a screen reader meets three unlabelled radios; and choosing role="radio" over three toggle buttons obliges the radiogroup keyboard behaviour, one tab stop with the arrows moving selection and focus together. Both are invisible in a screenshot and neither survives being copied by eye, so both sit beside the CSS rather than in it. Also recorded: the switch needs a surface under it rather than a canvas, since its ground is the sunk tier and on the light half of these surfaces that is the canvas value; and Tower Finder, which runs the pair and the control from outside retina-server. It gets no column in the tables and no voice in §1 on purpose — it is dash's look on another host, and a seventh column would imply a seventh personality it does not have. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Babissimo
force-pushed
the
docs/brand-theme-control
branch
from
September 15, 2026 14:17
31ecb15 to
eacfd1c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #22, which documents the palette pair and the three-versus-two-state
divergence. This adds the part that was still missing: the control itself.
§3 described what the theme switch does to a surface and never described the
thing a person clicks. Read cold, the guide told you which half of the palette
you would get and left the control to be invented per surface. That is exactly
what happened: Tower Finder grew a two-state chip of its own before anyone
noticed dash already had a three-state radiogroup
(offworldlabs/tower-finder-service#35).
So §6 gains an entry for
.theme-switch, andtokens.cssgains its rules.The styling is the easy half and not the point. Six declarations. What is
worth writing down is the markup contract underneath: the buttons hold a glyph
and no text, so without an
aria-labeland a matchingtitlea screen readermeets three unlabelled radios; and choosing
role="radio"over three togglebuttons obliges the radiogroup keyboard behaviour, one tab stop with the arrows
moving selection and focus together. Both are invisible in a screenshot and
neither survives being copied by eye, so both sit beside the CSS rather than
inside it.
Also recorded:
tier, and on the light half of these surfaces that is the canvas value (§3), so
one dropped straight onto a page reads as three loose glyphs with only its
hairline bounding it.
role="menuitem"button in the toolbar overflow menu, two states, none of theradiogroup behaviour. §10's divergence bullet now says the controls differ as
much as the behaviour does.
retina-server. Deliberately with no column in the tables and no voice in §1:it is dash's look on another host, and a seventh column would imply a seventh
personality it does not have.
No change to any palette value.
🤖 Generated with Claude Code