Skip to content

fix: dark-mode contrast bugs from the Studio light-mode rollout - #513

Merged
jackgranatowski merged 1 commit into
mainfrom
claude/dark-mode-contrast-fixes
Jul 3, 2026
Merged

jackgranatowski merged 1 commit into
mainfrom
claude/dark-mode-contrast-fixes

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes 4 dark-mode contrast bugs flagged by CodeRabbit review on codeslash-dev/SLASHED-Plugins#154 (which vendors this code), left over from the #506#510 light-mode rollout.

Fixes

  • SliderRow.svelte — the default: {rawDefault} helper text used dark:text-slate-700, which is darker than the light-mode value, making it worse on the dark shell instead of better. Swapped to dark:text-slate-400.
  • CheatsheetPanel.svelte — search input placeholder had no dark: variant, staying at placeholder:text-slate-600 (low contrast on the dark input background). Added dark:placeholder:text-slate-400.
  • HomePanel.svelte — same missing dark:placeholder:* gap on the quick-save input.
  • ThemesPanel.svelte — same missing dark:placeholder:* gap on the save-form input, plus the "No saved themes yet" empty-state text had no dark: variant at all.

🤖 Generated with Claude Code


Generated by Claude Code

Summary by CodeRabbit

  • Style
    • Improved dark-mode readability across several input fields and hint texts.
    • Updated placeholder and empty-state text colors so they are easier to see in dark themes.
    • Refined the appearance of search, save, slider, and theme-related UI elements for a more consistent look.

- SliderRow: the "default: X" helper text used dark:text-slate-700,
  which gets darker on the dark shell instead of lighter — swap to
  dark:text-slate-400 so it stays readable.
- CheatsheetPanel, HomePanel, ThemesPanel: search/save inputs were
  missing a dark:placeholder variant, staying at the light-only
  placeholder:text-slate-600 against the new dark input background.
- ThemesPanel: the "No saved themes yet" empty state had no dark:
  variant at all.

Found by CodeRabbit review on SLASHED-Plugins#154.
@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c1ddf677-9872-4d73-8f42-a5c0d69e1a62

📥 Commits

Reviewing files that changed from the base of the PR and between ce4dfac and 637c701.

📒 Files selected for processing (4)
  • configurator/src/components/inputs/SliderRow.svelte
  • configurator/src/components/panels/CheatsheetPanel.svelte
  • configurator/src/components/panels/HomePanel.svelte
  • configurator/src/components/panels/ThemesPanel.svelte

📝 Walkthrough

Walkthrough

This PR updates Tailwind dark-mode CSS classes across four Svelte components in the configurator app, adjusting text and placeholder colors for improved dark mode readability. No logic, behavior, or component interfaces were changed.

Changes

Dark Mode Styling Fixes

Layer / File(s) Summary
Dark-mode text and placeholder color updates
configurator/src/components/inputs/SliderRow.svelte, configurator/src/components/panels/CheatsheetPanel.svelte, configurator/src/components/panels/HomePanel.svelte, configurator/src/components/panels/ThemesPanel.svelte
Adjusted dark-mode Tailwind classes: default-value hint text color, search/save/theme input placeholder colors, and empty-state text color, all switched to slate-400 shades.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

  • codeslash-dev/SLASHED#434: Overlaps with this PR's changes to CheatsheetPanel.svelte's dark-mode styling on the search input.

Suggested labels: codex

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the PR’s main change: fixing dark-mode contrast issues left from the Studio light-mode rollout.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/dark-mode-contrast-fixes

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix dark-mode contrast for placeholders and helper text in Studio configurator

🐞 Bug fix 🕐 10-20 Minutes

Grey Divider

AI Description

• Fix unreadable dark-mode helper text on slider rows.
• Add missing dark-mode placeholder colors to search/save inputs.
• Ensure Themes empty-state text has a dark-mode color variant.
Diagram

graph TD
  App["Configurator UI"] --> Slider["SliderRow"] --> Tw{{"Tailwind dark variants"}}
  App --> Cheat["CheatsheetPanel"] --> Tw
  App --> Home["HomePanel"] --> Tw
  App --> Themes["ThemesPanel"] --> Tw
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Centralize input styling (shared component or utility class)
  • ➕ Prevents repeated placeholder/contrast mistakes across panels
  • ➕ Makes future theme rollouts a single-point change
  • ➖ Follow-up refactor effort; touches more files than this targeted fix
2. Add dark-mode visual regression checks
  • ➕ Catches contrast regressions automatically (placeholders, helper text, empty states)
  • ➕ Protects future design rollouts
  • ➖ Requires screenshot infra/baselines; higher maintenance cost
3. Use semantic color tokens instead of hardcoded `slate-*`
  • ➕ Themeable contrast control without hunting per-component classes
  • ➕ Better alignment with design-token goals
  • ➖ Requires token design decisions and wider migration work

Recommendation: Land this PR as-is: it’s a low-risk, targeted contrast fix. Consider a follow-up to centralize shared input class strings (placeholders/background/border/text) to reduce repeated dark: omissions.

Files changed (4) +5 / -5

Bug fix (4) +5 / -5
SliderRow.svelteFix dark-mode contrast for the “default:” helper text +1/-1

Fix dark-mode contrast for the “default:” helper text

• Adjusts the helper text color used when showing the default raw value. Replaces an overly-dark 'dark:text-slate-700' with 'dark:text-slate-400' to keep the hint readable on dark shells.

configurator/src/components/inputs/SliderRow.svelte

CheatsheetPanel.svelteAdd dark-mode placeholder color for cheatsheet search +1/-1

Add dark-mode placeholder color for cheatsheet search

• Adds 'dark:placeholder:text-slate-400' to the search input so the placeholder remains legible on the dark input background.

configurator/src/components/panels/CheatsheetPanel.svelte

HomePanel.svelteAdd dark-mode placeholder color for quick-save input +1/-1

Add dark-mode placeholder color for quick-save input

• Adds 'dark:placeholder:text-slate-400' to the quick-save theme name input to prevent low-contrast placeholders in dark mode.

configurator/src/components/panels/HomePanel.svelte

ThemesPanel.svelteFix dark-mode placeholder and empty-state text contrast +2/-2

Fix dark-mode placeholder and empty-state text contrast

• Adds 'dark:placeholder:text-slate-400' to the save-name input and adds a 'dark:text-slate-400' variant for the “No saved themes yet.” empty-state message.

configurator/src/components/panels/ThemesPanel.svelte

@coderabbitai coderabbitai Bot added the codex label Jul 3, 2026
jackgranatowski pushed a commit to codeslash-dev/SLASHED-Plugins that referenced this pull request Jul 3, 2026
- Switch the frontend overlay's theme pin from a raw themeState.value
  assignment to forceTheme(), now that SLASHED#512 (which added it) is
  merged. The raw assignment left followSystem enabled, so a later OS
  prefers-color-scheme change could flip the overlay back to light
  while it's open (CodeRabbit review finding).
- Sync 4 dark-mode contrast fixes from the framework
  (codeslash-dev/SLASHED#513): SliderRow's inverted helper-text shade,
  and missing dark:placeholder/text variants in CheatsheetPanel,
  HomePanel, and ThemesPanel.
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

@jackgranatowski
jackgranatowski merged commit ee6af2c into main Jul 3, 2026
13 checks passed
jackgranatowski pushed a commit that referenced this pull request Jul 5, 2026
Verified live-vs-staged by building the bundle + checking comment state:
- SHIPPED (live in core): .sf-corner-scoop (inverted radius, via mask), .sf-overlap
  (overlap effect), .sf-grid-flex (centered flex-grid) -> close audit 2.3, 14, 8.12
  and priorities B27, B11, flex-grid gap.
- STAGED (authored but commented in optional/utilities.css): .sf-hover-*, .sf-h1..h6,
  .sf-z-*, .sf-object-* -> B3 and B7-headings move from 'missing' to 'authored,
  awaiting un-stage'. .sf-btn/.sf-card/.sf-skeleton still staged. .sf-boxed dropped.
- Dark-mode contrast fixes (PR #513) noted against A1.
- Corrected the stale 'utilities.css is an empty stub' premise.
Plugin: recent PRs infra/tests/marketing/relicense only — no new ACSS parity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AR8LFdZpCqJj3AaYWM4hB4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants