Skip to content

fix: ダークモードでプレーンテキストが背景と同化する問題を修正#6

Merged
hirano00o merged 10 commits intomainfrom
feat/auto-theme-switching
Mar 12, 2026
Merged

fix: ダークモードでプレーンテキストが背景と同化する問題を修正#6
hirano00o merged 10 commits intomainfrom
feat/auto-theme-switching

Conversation

@hirano00o
Copy link
Owner

Summary

  • CSS 変数 --gce-code-text をライト/ダークテーマの :root ブロックに追加(#24292f / #e6edf3
  • td.gce-code セレクタに color: var(--gce-code-text) を追加し、highlight.js クラスが付かないプレーンテキストの基本色をテーマごとに制御
  • 対応するテストを test/styles.test.ts に追加・強化(セレクタブロック単位の正規表現検証、auto テーマの @media ブロック内包確認を含む)

Background

auto テーマ実装後、ダークモードで変数名・括弧・演算子などの hljs クラスが付かないプレーンテキストがダーク背景 #0d1117 に対してブラウザデフォルト(黒)で表示されており、読めない状態だった。

Test plan

  • npm test で全99テスト通過を確認
  • npm run build でビルド成功を確認
  • dist/git-code-embed.min.js--gce-code-text 変数と color: var(--gce-code-text) が含まれることを確認

single ファイルで OS テーマに追従できるよう auto モードを導入した。
ライトとダークを別ファイルで管理する運用では、ページと JS の組み合わせを
誤ると文字が背景に埋もれる問題があったため、メディアクエリで動的に切り替える。

- src/styles.ts: buildThemeCSS() を export し、auto 時は DARK_COLORS を
  @media (prefers-color-scheme: dark) ブロックで囲んで出力
- esbuild.config.ts: --auto フラグを追加、デフォルト出力を
  git-code-embed.min.js (auto) に変更
- package.json: build を auto、build:light / build:all を整備
- test/styles.test.ts: buildThemeCSS の挙動を 6 ケースで検証
npm run build がオートテーマ出力に変わったため、ダークモードセクションと
ビルドセクションを更新した。ライトモード固定・ダークモード固定の
各バリアントについても利用方法を明示した。
--gce-code-text 変数を追加し td.gce-code の基本テキスト色をテーマごとに定義。
highlight.js クラスが付かない変数名・括弧・演算子等がダーク背景で読めなかった問題を解消。
color: var(--gce-code-text) が td.gce-code セレクタより後ろに現れることを
アサートし、誤ったセレクタへの記述を検出できるようにした。
セレクタより後ろにあるだけでなく、対象ブロックの閉じ括弧より前に
color: var(--gce-code-text) が存在することを確認し、
誤ったセレクタへの配置を確実に検出できるようにした。
.gce-table td.gce-code ではなく .gce-container .gce-table td.gce-code で
完全なセレクタを検索するようにし、誤ったセレクタとの誤マッチを防いだ。
indexOf("}") による最初の閉じ括弧探索では将来ネストが追加された際に
誤検出するリスクがあるため、正規表現でブロック全体を正確に取得する方式に変更。
@hirano00o hirano00o merged commit 4cd0c0d into main Mar 12, 2026
1 check passed
@hirano00o hirano00o deleted the feat/auto-theme-switching branch March 12, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant