refactor: warm color palette to match brand character#517
Conversation
Desaturate semantic colors and warm neutral grays to unify the palette around the brand's low-chroma, warm character anchored by #8b7355.
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughCSS design system color tokens are updated with new warm and sage-toned hex/RGBA values across all theme scopes (default, dark media query, and dark class). The analytics timeseries chart's color palette is refreshed with new hex values and a dynamic CSS variable reference. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Terraform Validation Results
Pushed by: @ColeMurray, Action: |
There was a problem hiding this comment.
Summary
PR Title and number: refactor: warm color palette to match brand character (#517)
Author: @ColeMurray
Files changed: 2, additions/deletions: +49/-49
This PR refines the web palette toward warmer, lower-chroma tones and updates the analytics timeseries fallback colors to match. The direction is good, but two token changes introduce accessibility regressions in existing UI, so I am requesting changes.
Critical Issues
- [Functionality & Correctness]
packages/web/src/app/globals.css:55---secondary-foregroundnow falls to roughly2.75:1on the light background and3.03:1on the dark background. This token is already used for normal UI labels, timestamps, chips, and disclosure icons, so the change makes routine secondary text harder to read and below WCAG AA. - [Functionality & Correctness]
packages/web/src/app/globals.css:177- Dark-mode--destructivechanged to#d4695ewhile--destructive-foregroundremains white, leaving that pair at about3.5:1contrast. Existing buttons already use this exact token pair, so button text regresses immediately in dark mode.
Suggestions
- [Code Quality]
packages/web/src/app/globals.css:135- Potential concern to verify: the new--warningand--infofills are also below AA against the unchanged white foreground tokens. I did not find a current diff usage that blocks this PR the same way as--destructive, but it would be worth auditing the remaining semantic*-foregroundpairings while adjusting the palette.
Nitpicks
- Nit: None.
Positive Feedback
- The semantic-token-first approach in
globals.csskeeps the palette centralized and makes brand refinement straightforward. - Reusing semantic tokens in
timeseries-chart.tsxfor the first series colors is a maintainable improvement over hardcoded values. - The chart fallback colors stay tonally consistent with the new brand direction without changing component logic.
Questions
- None.
Verdict
Request Changes: the palette update is headed in a good direction, but the current token values create blocking contrast regressions in existing UI.
Summary
Warms the grays, desaturates semantic/status colors, and unifies the palette around the brand's low-chroma, warm character anchored by
#8b7355. Based on the Paper design system audit ("Colors — Refined" artboard).Token value changes:
--muted-foreground(light)#666666#6b655f--secondary-foreground(light)#999999#9c9690--destructive(light)#dc2626#c24a3a--destructive(dark)#ef4444#d4695e--success(light)#28c840#4d9a5f--success(dark)#28c840#6aad7a--warning(light)#d97706#c49135--warning(dark)#f59e0b#d4a54a--info(light)#3b82f6#5b82a8--info(dark)#60a5fa#7a9dbdChart series palette updated to use semantic tokens where possible and desaturated hardcoded colors to match the warm palette.
Test plan
#f8f8f6background#1a1a1aSummary by CodeRabbit