`text-wrap`ベースのテキストユーティリティクラスを追加

shoelace-style/webawesome

WebAwesomeにwa-text-wrap-nowrapwa-text-wrap-balancewa-text-wrap-prettyの3つのユーティリティクラスが追加され、CSSのtext-wrapプロパティをデザインシステムの命名規則に沿って使えるようになりました。

背景

これまでWebAwesomeのテキストユーティリティには折り返し制御の手段としてwa-text-truncate(省略記号付き切り捨て)しか存在せず、折り返しの調整には独自CSSを書く必要がありました。一方、モダンブラウザではCSS text-wrapプロパティが広くサポートされ、balanceprettyといった値によって視覚的に整ったテキストレイアウトが実現できるようになっています。

なお、text-wrap: prettyはFirefoxが未サポートのため、他の2値とは異なる対応が必要という制約がありました。この制約も含めてどう実装するかが、本PRの設計上の焦点になっています。

技術的な変更

packages/webawesome/src/styles/utilities/text.cssに3つのクラスが追加されました。wa-text-wrap-nowrapwa-text-wrap-balanceは単純なプロパティ宣言として追加されていますが、wa-text-wrap-prettyのみ@supports (text-wrap: pretty)ブロックで包まれています。

.wa-text-wrap-nowrap {
  text-wrap: nowrap;
}

.wa-text-wrap-balance {
  text-wrap: balance;
}

@supports (text-wrap: pretty) {
  .wa-text-wrap-pretty {
    text-wrap: pretty;
  }
}

@supportsブロックを使うことで、Firefoxなどtext-wrap: prettyを未サポートのブラウザではクラスそのものが無効化され、テキストは通常の折り返し動作にフォールバックします。クラスを付与しても壊れた表示にはならない、グレースフルデグラデーションの実装です。

ドキュメント側ではdocs/utilities/text.mdに新たなWrappingセクションが追加され、Truncationセクションの直前に配置されています。各クラスの挙動をプレビューできるテーブルと、Firefoxでの非サポートに関する:::infoアドモニションも含まれています。

設計判断

クラス名は既存のwa-{property}-{value}規則に従って命名されています。wa-align-items-*wa-justify-content-*wa-font-size-*と同じ体系であり、クラス名を見ただけで対応するCSSプロパティと値が一意に特定できます。PR内でもこの命名規則への準拠が明示的な設計指針として挙げられています。

text-wrap: prettyの扱いについては、@supportsによるプログレッシブエンハンスメントが採用されました。未サポートブラウザでは何も適用されないため、text-wrap: prettyの意図(最終行への孤立語防止)は達成されないものの、レイアウト崩れは発生しません。nowrapbalanceについては広くサポートされているため、@supportsなしで直接宣言されています。

まとめ

本PRは最小限のCSS追加で3つの折り返し制御ユーティリティを提供しつつ、ブラウザ互換性の差異を@supportsで透過的に吸収した変更です。命名規則の一貫性とグレースフルデグラデーションを両立させた実装は、デザインシステムのユーティリティ拡張における典型的なパターンを示しています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
cb546923

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

品質レビュー結果

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

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)、背景・技術詳細・設計判断(各論)、まとめ(結論)の3部構成が明確に適用されており、非常に分かりやすい構成です。

カスタムMarkdown構文 ⚠ WARNING

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

ファイル名付きシンタックスハイライトは正しく使用されていますが、PRリンクの記法がガイドラインの`[#2365](URL)`形式ではなく`[PR #2365](URL)`となっています。ただし、読者の理解には影響しません。

対象読者への適合性 ✓ PASS

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

`@supports`ルール、グレースフルデグラデーション、デザインシステムの命名規則など、専門知識を持つエンジニアを対象とした適切な技術レベルで記述されています。

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

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

各セクション・各段落の冒頭にトピックセンテンスが配置されており、記事の骨子を掴みやすいです。1段落1トピックの原則も守られています。

Diff内容との照合 ✓ PASS

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

記事に引用されているCSSコードは、提供されたDiffの内容と完全に一致しており、ファイルパスの指定も正確です。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`text-wrap`, `@supports`, `グレースフルデグラデーション`といった技術用語が文脈に応じて正確に使用されています。

説明の技術的正確性 ✓ PASS

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

`@supports`を用いたブラウザ互換性の吸収や命名規則に関する説明など、すべての技術的説明がPR情報とDiffの内容に裏付けられており、正確です。

事実の突合 ✓ PASS

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

記事で言及されているすべての事実(3つのクラス追加、Firefoxの未サポート、ドキュメント変更など)は、PRのDescriptionやDiffで裏付けられており、ハルシネーションは検出されませんでした。

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

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

PR番号 `#2365` とそれに対応するリンクが正確に記載されています。

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

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

記事のタイトルは、PRのタイトル「Add `text-wrap`-Based Text Utilities」の内容を正確に反映しています。

外部知識の正確性 ✓ PASS

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

Firefoxのサポート状況に関する言及はPR Descriptionに基づいたものであり、PR情報に基づかない外部知識(リリース予定など)の追加はありません。

時間表現の正確性 ✓ PASS

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

PR内の「does not yet ship」という表現を「未サポート」と正確に記述しており、時間表現の歪曲はありません。