`--wa-accordion-divider-color` カスタムプロパティの削除とスタイルカスタマイズ方法の整理

shoelace-style/webawesome

<wa-accordion-item> から不適切にスコープされた --wa-accordion-divider-color を除去し、区切り線の色はホスト要素のセレクタで直接上書きできるようになりました。機能的な振る舞いは変わらず、CSS API がシンプルになります。

背景

--wa-accordion-divider-color はアコーディオン項目間の区切り線の色を指定するために導入されましたが、スコープが <wa-accordion-item> に固定され、実際の利用ケースは極めて限定的でした。コンポーネント内部でのみ参照され、外部からの汎用的なカスタマイズが困難だったため、開発者は wa-accordion-item:not(:first-child) という host selector を用いて直接スタイルを上書きする必要がありました。PR #2491 はこのスコープの不整合を解消し、不要なカスタムプロパティを削除することを目的としています。

技術的な変更

スタイル定義からの除去

packages/webawesome/src/components/accordion-item/accordion-item.styles.ts では、border-top に対するフォールバックとして var(--wa-accordion-divider-color, var(--wa-color-surface-border)) が使用されていました。これを固定のサーフェスボーダー色に置き換え、--wa-accordion-divider-color の参照を除去しました。

:host(:not(:first-child)) {
-  border-top: var(--wa-panel-border-width) var(--wa-panel-border-style)
-    var(--wa-accordion-divider-color, var(--wa-color-surface-border));
+  border-top: var(--wa-panel-border-width) var(--wa-panel-border-style) var(--wa-color-surface-border);
}

この変更により、デフォルトの border-top カラーが直接適用され、プロパティの有無に関係なく見た目は変わりません。

JSDoc からの削除

コンポーネントクラス packages/webawesome/src/components/accordion-item/accordion-item.ts の JSDoc でも --wa-accordion-divider-color に関する記述が削除されました。

- * @cssproperty [--wa-accordion-divider-color=var(--wa-color-surface-border)] - The color of the divider between accordion items.

公開 API からこのプロパティが消えることで、ドキュメントと実装の整合性が保たれます。

カスタマイズ方法の変更点

プロパティがなくなった代わりに、利用者は以下のように host selector を用いて任意の色や幅を上書きできます。

wa-accordion-item:not(:first-child) {
  border-top-color: var(--custom-divider-color);
  border-top-width: 2px;
}

この手法はスコープをコンポーネント全体に広げ、従来と同等の見た目調整が可能です。

設計判断

カスタムプロパティの削除 は、公開 CSS API を最小化し、スコープの一貫性を保つための選択です。プロパティ自体が限定的にしか使用されていなかったことから、リネームや拡張ではなく除去が最もシンプルかつ安全なアプローチと判断されました。

また、border-top のデフォルト値は既に var(--wa-color-surface-border) と同等であるため、機能的な振る舞いに差異は生じません。したがって、削除は後方互換性を保ちつつコードベースをクリーンに保つ効果があります。

まとめ

--wa-accordion-divider-color の削除は、スコープが不適切で使用頻度が低いという実情に即したリファクタリングです。挙動は変わらず、スタイルカスタマイズは host selector に委ねられるため、API の肥大化が防がれ、開発者体験が向上します。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
4848e65f

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

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文、背景、技術的変更、設計判断(任意)、まとめの5部構成が明確に存在し、各セクションが適切に配置されています。

カスタムMarkdown構文 ⚠ WARNING

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

コードブロックのファイル名付きシンタックスハイライトは正しい形式ですが、GitHubリンクの記法が `[PR #2491](URL)` となっており、要求された `[#2491](URL)` の形式になっていません。

対象読者への適合性 ✓ PASS

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

専門的なエンジニア向けの記述で、余計な初心者向け解説はなく適切です。

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

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

各セクションが総論→各論→結論の流れで構成され、段落はトピックセンテンスで始まり、1段落1トピック、長さも適切です。

Diff内容との照合 ✓ PASS

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

記事内のコードブロックは提供されたDiffと完全に一致しており、ファイル名や変更内容も正確です。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

使用されている技術用語はPRと一致し、誤用はありません。

説明の技術的正確性 ✓ PASS

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

技術的な説明はDiffおよびPRの記述と合致し、根拠のある正確な解説です。

事実の突合 ✓ PASS

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

全ての主張がPR情報で裏付けられており、外部知識や推測は含まれていません。

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

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

PR番号やコード中の変数名など数値・固有名詞は正確です。

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

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

タイトルはPRの内容(カスタムプロパティの削除とカスタマイズ方法)を正確に表現しています。

外部知識の正確性 ✓ PASS

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

記事にPRに記載されていない外部知識は含まれていません。

時間表現の正確性 ✓ PASS

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

時間表現は使用されておらず、PR情報と矛盾はありません。