DialogとDrawerがブラウザデフォルト色を使用する問題を修正

shoelace-style/webawesome

wa-dialogwa-drawerコンポーネントがユーザーエージェントのデフォルトテキスト色を使用していた問題が修正されました。これにより、これらのコンポーネントがデザイントークンで指定したテキスト色を正しく継承するようになります。

背景

wa-dialogwa-drawerは、コンテンツのレンダリング時にブラウザのデフォルトスタイルシートのdialog { color: canvastext; }を適用していました。この結果、デザイントークンでカスタムテキスト色を設定していても、ダイアログとドロワー内のテキストは黒(ダークモードでは白)で表示されていました。

#1978で報告されたこの問題は、背景色にはWeb Awesomeのデザイントークンが適用されているにもかかわらず、テキスト色だけがブラウザデフォルトを使用するという不整合を引き起こしていました。ドキュメントコンテキストで設定したテキスト色が、これらのコンポーネント内では反映されない状態でした。

技術的な変更

src/components/dialog/dialog.styles.tssrc/components/drawer/drawer.styles.tsのスタイル定義にcolor: inheritプロパティが追加されました。

Dialog変更前:

.dialog {
  width: var(--width);
  max-width: calc(100% - var(--wa-space-2xl));
  max-height: calc(100% - var(--wa-space-2xl));
  background-color: var(--wa-color-surface-raised);
  border-radius: var(--wa-panel-border-radius);
  border: none;
}

Dialog変更後:

.dialog {
  width: var(--width);
  max-width: calc(100% - var(--wa-space-2xl));
  max-height: calc(100% - var(--wa-space-2xl));
  color: inherit;
  background-color: var(--wa-color-surface-raised);
  border-radius: var(--wa-panel-border-radius);
  border: none;
}

Drawer変更前:

.drawer {
  max-width: 100%;
  max-height: 100%;
  overflow: hidden;
  background-color: var(--wa-color-surface-raised);
  border: none;
  box-shadow: var(--wa-shadow-l);
}

Drawer変更後:

.drawer {
  max-width: 100%;
  max-height: 100%;
  overflow: hidden;
  color: inherit;
  background-color: var(--wa-color-surface-raised);
  border: none;
  box-shadow: var(--wa-shadow-l);
}

color: inheritにより、これらのコンポーネントは親要素(ドキュメントコンテキスト)からテキスト色を継承するようになりました。ブラウザのデフォルトスタイル(canvastext)は上書きされ、Web Awesomeのデザイントークンで指定した色が適用されます。

設計判断

この変更では、colorプロパティにinheritを指定するアプローチが取られました。

PR Descriptionで述べられている通り、これによりコンポーネントはブラウザのデフォルトではなくドキュメントコンテキストからテキスト色を継承します。background-colorには引き続きvar(--wa-color-surface-raised)トークンを直接指定する一方で、colorは継承に任せる実装です。

本PRは、ブラウザデフォルトスタイルとの競合をcolor: inherit1行で解決した変更です。DialogとDrawerが親要素からテキスト色を継承することで、Web Awesomeのデザイントークンが意図通りに適用され、視覚的な一貫性が保たれるようになりました。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
3回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

「総論→各論→結論」の構成が明確です。リード文で要旨を述べ、背景、技術詳細、設計判断と展開し、最後にまとめるという理想的な構成になっています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```言語:ファイルパス)およびGitHubのIssue番号へのリンク記法が正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

デザイントークンやUser Agentスタイルシートに関する知識を前提としており、専門知識を持つエンジニアという対象読者に適切です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフがトピックセンテンスで始まり、要点が掴みやすい構成になっています。1段落1トピックの原則も守られています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

Diffで示された`color: inherit;`の追加が、記事内の「変更後」コードブロックに正確に反映されています。ファイルパスもDiffと一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「ユーザーエージェント」「デザイントークン」「canvastext」など、関連する技術用語が正確かつ適切な文脈で使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

`color: inherit`がブラウザのデフォルトスタイルを上書きし、親要素の色を継承させるという説明は技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内のすべての主張(問題の原因、Issue番号、解決策)は、提供されたPRのDescriptionとDiffによって完全に裏付けられています。ハルシネーションは検出されませんでした。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

関連するIssue番号(#1978)とPR番号(#2064)が正確に記載されています。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルはPRのタイトル「Fix for dialog and drawer using user agent default colors」の内容を正確に和訳・要約しており、記事内容とも一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事の内容は提供されたPR情報に限定されており、バージョン情報やリリース予定など、PR外の知識を持ち込んでいません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

「〜問題が修正されました」のように、完了した変更として正しく記述されており、時間表現に歪曲はありません。