refactor(design): the bot demo was the sixth colour system - #150
Merged
Conversation
#144 branded the bot page sections. It did not reach the demo underneath them, so every first-party bot still ran the per-colour palette in its interactive step -- the buttons, focus rings, progress dots, message bubbles, dropzone and context panel -- plus the bot switcher in the nav. The colour came from lib/demo/botDemoConfigs.ts, which carried its own accentColor per bot (blue, green, red, indigo, amber). That is the sixth place a colour was chosen, after: globals.css, lib/config/colors.ts, lib/hooks/navigationConfig.ts, ACCENT_HERO_CLASSES, and data/professionals.ts. DemoSection and BotSwitcher are used ONLY by the first-party bot pages (verified: no custom-bot page imports either), so both are now brand: BRAND_BUTTON, BRAND_FOCUS_RING, BRAND_STARTER, BRAND_CHECKBOX, BRAND_PROGRESS, BRAND_MESSAGE, BRAND_DROPZONE, BRAND_CONTEXT_PANEL, BRAND_SWITCHER. accentColor is gone from the demo config, its type, and the whole prop chain. What still emits raw palette, correctly: VISION_STATUS_CONFIG roadmap status -- completed green, in-progress blue, planned amber, vision purple. Four states that have to stay tellable apart; collapsing them to ochre would destroy the information. the /personal templates per-template identity in the memorial/legends product, chosen from an allowlisted surface. Both live behind lib/config/colors.ts, which the guard already documents as an exception -- so the guard passing while those classes ship is correct, not a blind spot. The blind spot was data/professionals.ts, fixed in #149. verify: format, lint, typecheck, 256 tests, build -- all green. Bot demo confirmed ochre end to end against a local production build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG
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.
#144 branded the bot page sections. It didn't reach the demo underneath them, so every first-party bot still ran the per-colour palette in its interactive step — buttons, focus rings, progress dots, message bubbles, dropzone, context panel — plus the bot switcher in the nav.
The colour came from
lib/demo/botDemoConfigs.ts, carrying its ownaccentColorper bot.Six places a colour was chosen
app/globals.css— the actual SSOTlib/config/colors.ts— 16-colour accent setslib/hooks/navigationConfig.ts— its own 5-colour nav schemeACCENT_HERO_CLASSES— a fifth set, internally inconsistentdata/professionals.ts— the homepage six (fix(design): the homepage had a fifth colour system, and the guard missed it #149)lib/demo/botDemoConfigs.ts— this PRThe fix
DemoSectionandBotSwitcherare used only by first-party bot pages — verified, no custom-bot page imports either — so both are now brand:BRAND_BUTTON,BRAND_FOCUS_RING,BRAND_STARTER,BRAND_CHECKBOX,BRAND_PROGRESS,BRAND_MESSAGE,BRAND_DROPZONE,BRAND_CONTEXT_PANEL,BRAND_SWITCHER.accentColoris gone from the demo config, its type, and the whole prop chain.What still emits raw palette — correctly
VISION_STATUS_CONFIG/personaltemplatesBoth live behind
lib/config/colors.ts, which the guard already documents as an exception — so the guard passing while those classes ship is correct, not a blind spot. The actual blind spot wasdata/professionals.ts, fixed in #149.Verify
format:check,lint,typecheck, 256 tests,build— all green. Bot demo confirmed ochre end to end against a local production build.🤖 Generated with Claude Code
https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG