スペーススケールの拡張と `wa-gap-4xl` バグ修正

shoelace-style/webawesome

--wa-space-5xl(5rem / 80px)デザイントークンと .wa-gap-5xl ユーティリティクラスが全テーマに追加され、あわせて wa-gap-4xl:where() セレクターから漏れていたバグも修正されました。

背景

Issue #1606 では、既存のスペーススケールに不足しているサイズが報告されていました。--wa-space-4xl(64px)の上位にあたる大きなスペーシングトークンへの需要が生じ、--wa-space-5xl の追加が求められていました。

あわせて、既存の wa-gap-4xl クラスにも問題がありました。gap.css:where() セレクターに wa-gap-4xl が含まれておらず、このクラスを使用しても display: flex が適用されない状態になっていました。

技術的な変更

スペーススケールの拡張とギャップユーティリティの修正は、テーマCSS・ユーティリティCSS・ドキュメントの3箇所に分散して行われています。

テーマへのトークン追加:
awesome.cssdefault.cssshoelace.css の3テーマすべてに、同一の式で --wa-space-5xl が追加されました。

--wa-space-4xl: calc(var(--wa-space-scale) * 4rem); /* 64px */
--wa-space-5xl: calc(var(--wa-space-scale) * 5rem); /* 80px */

値は var(--wa-space-scale) との積として定義されており、スケール変数を変更するだけで全サイズが比例して変動する既存の設計パターンに沿っています。

gap.css のバグ修正と新クラス追加:
:where() セレクターに wa-gap-4xlwa-gap-5xl を追加し、両クラスへの display: flex 適用を保証しました。

/* 変更前 */
:where(
  .wa-gap-l,
  .wa-gap-xl,
  .wa-gap-2xl,
  .wa-gap-3xl
) {
  display: flex;
}

/* 変更後 */
:where(
  .wa-gap-l,
  .wa-gap-xl,
  .wa-gap-2xl,
  .wa-gap-3xl,
  .wa-gap-4xl,
  .wa-gap-5xl
) {
  display: flex;
}

また、gap プロパティを割り当てる宣言ブロックも追加されています。

.wa-gap-4xl {
  gap: var(--wa-space-4xl);
}
.wa-gap-5xl {
  gap: var(--wa-space-5xl);
}

wa-gap-4xl はこれまで gap プロパティは定義されていたものの :where() から漏れていたため、display: flex なしで gap だけが存在するという不完全な状態でした。今回の修正でその矛盾が解消されています。

設計判断

--wa-space-scale を使った乗算形式 が一貫して採用されています。各スペーストークンは絶対値ではなくスケール変数との積として定義されているため、テーマレベルで --wa-space-scale を変更するだけで全スペーシングが比例的にスケールします。--wa-space-5xlcalc(var(--wa-space-scale) * 5rem) として定義されており、この設計原則を踏襲しています。

:where() セレクター を使っていることも注目点です。:where() は詳細度がゼロであるため、ユーティリティクラスのスタイルが意図せずコンポーネントのスタイルに勝ってしまうことを防いでいます。新しいクラスをこのセレクターに追加することで、既存の詳細度設計を維持しながらユーティリティを拡張できます。

まとめ

本PRは、スペーススケールを --wa-space-5xl まで拡張しながら、既存の wa-gap-4xl が持っていた :where() セレクター漏れを同時に解消しています。--wa-space-scale による比例スケーリングと :where() による詳細度制御という2つの設計原則を守りながら拡張を行った点で、既存のアーキテクチャとの一貫性が高い変更です。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
3160099e

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

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)という3部構成が明確に適用されており、模範的な記事構成です。

カスタムMarkdown構文 ✓ PASS

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

ファイル名付きシンタックスハイライト(`css:path/to/file.css`)およびGitHubのIssue/PRへのリンク記法はすべて正しく使用されています。

対象読者への適合性 ✓ PASS

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

デザイントークン、ユーティリティクラス、CSSセレクタの詳細度といった専門的なトピックを、対象読者であるエンジニアに適切なレベルで解説しています。

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

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

各セクションが総論→各論の構成になっており、各パラグラフはトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られており、非常に読みやすいです。

Diff内容との照合 ✓ PASS

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

記事内のコードブロックは、提供されたDiffの内容を正確に反映しています。読者の理解を助けるために変更前後のコードを適切に表現しており、優れています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「デザイントークン」「:where() セレクター」「詳細度」といった技術用語が文脈に応じて正確に使用されています。

説明の技術的正確性 ✓ PASS

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

「`wa-gap-4xl`が`:where()`から漏れていた」というバグの原因や、「`--wa-space-scale`を使った比例スケーリング」に関する説明は、技術的に正確かつ論理的です。

事実の突合 ✓ PASS

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

記事内のすべての主張は、PRのDescriptionおよびDiff内のコードによって裏付けられています。特に「設計判断」セクションは、コードから設計意図を正確に読み解いており、ハルシネーションはありません。

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

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

PR番号(#2153)、Issue番号(#1606)、トークン名、クラス名など、すべての数値・固有名詞は正確です。

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

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

記事のタイトルは、PRの主題である「スペーススケールの拡張」と「バグ修正」を的確に要約しており、PR内容と完全に一致しています。

外部知識の正確性 ✓ PASS

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

PR情報に含まれないバージョン情報やリリース予定などの外部知識の持ち込みはなく、提供された情報源に忠実です。

時間表現の正確性 ✓ PASS

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

「追加され」「修正されました」といった過去形の表現が使われており、PRで行われた変更の時制と一致しています。