ドキュメントサイドバーの現在ページに視覚的アクセント線を追加

shoelace-style/webawesome

WebAwesomeのドキュメントサイドバーに、現在表示中のページを示すアクセント線が追加されました。CSSの ::before 疑似要素とデザイントークンを活用したシンプルな実装で、ナビゲーションの現在位置の視認性が向上します。

背景

この変更は、ディスカッション #2346 での提案を受けて実装されました。変更前のサイドバーでは、現在のページを示す視覚的な手がかりが乏しく、ユーザーが自分の位置を把握しにくい状態でした。

PRの Before/After 比較画像からも確認できるように、変更後はサイドバーの左端に縦線が表示され、現在のページが一目でわかるようになっています。既存のリンクスタイルを変更せず、独立した装飾要素として追加している点が特徴です。

技術的な変更

変更はすべて packages/webawesome/docs/assets/styles/utils.css の1ファイルに収まっており、新規セレクタとスタイルの追加のみです。

追加されたCSSは、.current クラスを持つリンクを内包する li 要素に対して ::before 疑似要素でアクセント線を描画します。セレクタには2パターンが定義されており、直接の子要素として .current を持つ場合と、.wa-split ラッパーを経由する場合の両方に対応しています:

/* current page: accent line replacing the section's left rail */
li:has(> .current),
li:has(> .wa-split > .current) {
  position: relative;

  &::before {
    content: '';
    position: absolute;
    inset-block: calc(-1 * var(--wa-space-2xs));
    inset-inline-start: calc(-1 * var(--wa-space-m) - var(--wa-border-width-s));
    width: var(--wa-border-width-s);
    background: var(--wa-color-brand-on-quiet);
  }
}

線の配置には論理プロパティ(inset-block / inset-inline-start)が使用されており、RTL(右から左)レイアウトにも対応できる設計です。寸法はすべて --wa-space-2xs--wa-space-m--wa-border-width-s--wa-color-brand-on-quiet といったデザイントークンで定義されており、テーマ変更に追従します。inset-block に負のオフセットを与えることで、線が li のパディング領域まではみ出して縦に伸び、セクション左レールの代替として機能します。

設計判断

:has() セレクタを使って親要素にスタイルを適用する「親セレクタパターン」 が採用されました。.current クラス自体にスタイルを追加する代わりに、その親 li を起点にして ::before 疑似要素で装飾することで、既存のリンクスタイルに手を加えずに視覚的表現を追加しています。

アクセント線の横位置は calc(-1 * var(--wa-space-m) - var(--wa-border-width-s)) という計算で li の左端より外側に配置されており、サイドバーのインデント構造と噛み合う形でセクションの「左レール」を置き換える意図がコメントからも読み取れます。

まとめ

15行の純粋なCSS追加で、ナビゲーションの現在位置の視認性を高めた変更です。デザイントークンと論理プロパティの組み合わせにより、テーマやレイアウト方向への追従も考慮されており、WebAwesomeのデザインシステムの設計指針が小さな変更にも一貫して反映されています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
67887eeb

この記事は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:ファイルパス)およびGitHubへのリンク記法([#2346](URL)など)が正しく使用されています。

対象読者への適合性 ✓ PASS

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

CSSの疑似要素、:has()セレクタ、論理プロパティなどの専門用語を適切に使用しており、対象読者であるエンジニアに適した技術レベルで記述されています。

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

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

各セクションの冒頭に要約があり、各段落がトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られており、非常に読みやすいです。

Diff内容との照合 ✓ PASS

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

記事内で引用されているCSSコードブロックとファイル名は、提供されたDiff情報と完全に一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「::before 疑似要素」「論理プロパティ」「デザイントークン」「:has() セレクタ」など、使用されている技術用語はすべて正確かつ文脈に適しています。

説明の技術的正確性 ✓ PASS

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

:has()セレクタの動作原理や、論理プロパティがRTLレイアウトに与える影響などの技術的な説明は、正確で論理的です。

事実の突合 ✓ PASS

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

記事内のすべての主張は、PRのDescription、Diff、およびコード内のコメントによって裏付けられています。特に「設計判断」はDiff内のコメントを根拠としており、創作や推測は見られません。

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

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

PR番号(#2352)、ディスカッション番号(#2346)、CSSクラス名、デザイントークン名などの数値・固有名詞はすべて正確です。

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

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

記事のタイトル「ドキュメントサイドバーの現在ページに視覚的アクセント線を追加」は、PRのタイトル「Additional Emphasis on Current View in Docs Sidebar」の内容を的確に表現しています。

外部知識の正確性 ✓ PASS

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

記事の内容は提供されたPR情報の範囲内に留まっており、バージョン情報やリリース予定など、根拠のない外部知識の追加はありません。

時間表現の正確性 ✓ PASS

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

「〜が追加されました」といった時間表現は、完了した変更を報告する文脈として適切であり、PR情報との矛盾はありません。