Repository navigation
Claude/hansmartens market positioning mlt89z - #688
Merged
hansmartensdev merged 4 commits intoSep 14, 2026
Merged
Conversation
The wordmark beside the logo used brand-600, which falls below 4.5:1 on white in four palettes - emerald 4.40, sky 4.45, cyan 4.27, teal 4.17. It renders at 17px bold, under the 18.66px that would let the large-text threshold of 3:1 apply, so axe reports a contrast violation and the Lighthouse accessibility score drops below 100 for anyone using one of those four. It was the only failing element. A sweep of nine pages across those four palettes, mobile and desktop, returned 72 failing nodes and every one of them was this span. The logo badge beside it passes. brand-700 clears the threshold in every palette, the worst being teal at 6.03. Applied in the header as well as the footer: the header wordmark clamps down to 16px below a 345px viewport, where it stops counting as large text and would fail the same way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST
Removes Orange, Amber, Lime and Magenta. Emerald, Teal, Cyan, Sky, Blue, Indigo, Violet and Purple stay, and their files are unchanged - the diff under styles/themes/ is four deletions and nothing else. Twelve read as more choice than it was. Cyan holds Teal's exact lightness and chroma eighteen degrees away, Sky sits sixteen degrees from Blue, and five of the twelve crowded into the stretch between hue 239 and 296. Amber and Lime lose their hue at the dark end of their own scale, which is where this design puts its surfaces: the hero gradient and the CTA band both travel to brand-900. Orange had no theme file of its own - it was the base scale in primitives.css, which every theme file overrides. Deleting orange.css alone would have left an orange fallback behind an unrecognised data-theme, so the base scale is now Blue, matching the default BaseLayout already seeds. Nothing renders against it in normal use. A visitor holding a removed theme in sessionStorage is already handled: the bootstrap validates against its allowlist before writing data-theme, so a saved Orange falls back to the default rather than to nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST
The count was quoted in eleven places with nothing checking any of them - the
config, both locales, the project page, four blog posts, the README and
AGENTS.md. All now say eight, and the lists that named the palettes name the
eight that remain.
Three things the sweep turned up that were wrong before this change:
- the getting-started post and the configuration guide both documented the
default theme as indigo, where BaseLayout seeds blue
- the configuration guide located the picker registry in ThemeSelector.astro,
where it has been lib/themes.ts since the curation flag landed, and quoted
a brand scale that had drifted from the file it claimed to show
- the design-system post taught the token system with lime as the base brand
colour, which it has not been
Every colour value quoted in the docs is now read from the file it names.
colour-themes.test.ts pins the set against four things that nothing compared
before: the files in styles/themes/, the import list in tokens/colors.css, the
allowlist the bootstrap validates sessionStorage against, and the registry the
pickers read. A file with no import ships nothing, an import with no registry
entry ships CSS no one can reach, and a registry entry missing from the
allowlist is a swatch that refuses to stick. It also checks the count in the
copy and that no per-theme CSS exception names a theme that is gone.
It earned its place while being written: it caught a listing of the theme
filenames buried in the README that the manual sweep had missed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST
The picker ran emerald to purple, ascending the hue wheel. It now runs the other way, so the row opens on purple and ends on emerald. One array in lib/themes.ts drives both the desktop dropdown and the mobile row, so the order moves in both at once. The README and the configuration guide list the set in that order too, and the guide's table and code block follow. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwJB1u6U3vdEZ9LrHRebST
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
hansmartensdev
deleted the
claude/hansmartens-market-positioning-mlt89z
branch
September 14, 2026 23:13
This branch was successfully deployed
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.
What does this PR do?
A clear description of the change and why it was made.
Fixes # (issue number, if applicable)
Type of change
Checklist
pnpm lintpasses with 0 errorspnpm checkpasses with 0 errorspnpm buildcompletes successfullyScreenshots (if relevant)
Add before/after screenshots for visual changes.