auto-rows と auto-cols に裸値サポートを追加

tailwindlabs/tailwindcss

この PR では auto-rows-*auto-cols-* ユーティリティが、スペーシングスケールの裸値(例: auto-rows-12auto-cols-16)を受け取れるようになりました。クラス指定だけで grid-auto-rowsgrid-auto-columnscalc(var(--spacing) * <value>) に展開されます。

背景

従来、Tailwind CSS は auto-rows-autoauto-rows-minauto-rows-maxauto-rows-fr(同様に auto-cols-*)のみを提供しており、スペーシングスケールに基づく数値指定はサポートされていませんでした。そのため、開発者はカスタム CSS で grid-auto-rows: calc(var(--spacing) * 12) と記述する必要があり、ユーティリティの一貫性が欠けていました。今回の変更は、これらのユーティリティを他の spacing 系ユーティリティと同等の扱いに統一することを目的としています。

技術的な変更

packages/tailwindcss/src/utilities.tsauto-colsauto-rows の定義に handleBareValue が追加されました。handleBareValue は、テーマが --spacing を解決できるか確認し、値が有効なスペーシング倍率であれば --spacing(<value>) というトークンを返します。以下は変更前後の差分です。

@@ -1985,6 +1985,11 @@ export function createUtilities(theme: Theme) {

   functionalUtility('auto-cols', {
     themeKeys: ['--grid-auto-columns'],
+    handleBareValue: ({ value }) => {
+      if (!theme.resolve(null, ['--spacing'])) return null
+      if (!isValidSpacingMultiplier(value)) return null
+      return `--spacing(${value})`
+    },
     handle: (value) => [decl('grid-auto-columns', value)],
     staticValues: {
       auto: [decl('grid-auto-columns', 'auto')],
@@ -1996,6 +2001,11 @@ export function createUtilities(theme: Theme) {

   functionalUtility('auto-rows', {
     themeKeys: ['--grid-auto-rows'],
+    handleBareValue: ({ value }) => {
+      if (!theme.resolve(null, ['--spacing'])) return null
+      if (!isValidSpacingMultiplier(value)) return null
+      return `--spacing(${value})`
+    },
     handle: (value) => [decl('grid-auto-rows', value)],
     staticValues: {
       auto: [decl('grid-auto-rows', 'auto')],

テストファイル packages/tailwindcss/src/utilities.test.ts でも auto-cols-12auto-rows-12 の期待出力が追加され、calc(var(--spacing) * 12) が生成されることが検証されています。テストは既存のユーティリティテストに統合され、全体のテストスイートは依然としてパスします。

設計判断

handleBareValue の導入は、既存の functionalUtility フレームワークを再利用した最小侵入型の拡張です。新しい設定キーを増やす代わりに、同一キー auto-rows / auto-cols のハンドラを拡張したため、後方互換性が保たれ、既存の auto-rows-auto などはそのまま動作します。また、パーセンテージベースの値は今回の対象外として TODO に残されており、必要に応じて auto-rows-[75%] のような任意値構文で回避可能です。これにより、実装リスクを抑えつつ機能拡張を提供する設計方針が示されています。

まとめ

auto-rows-*auto-cols-* にスペーシングスケールの裸値が利用できるようになり、Tailwind CSS のユーティリティがさらに一貫した表現力を持ちました。既存 API への影響はなく、テストで正しく機能が確認されているため、ユーザーはすぐに auto-rows-12 などのクラスを活用できます。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
16befb8e

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

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文、背景、技術的変更、設計判断、まとめの5セクションが揃っており、総論→各論→結論の構成が明確です。

カスタムMarkdown構文 ✓ PASS

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

コードブロックは正しいdiffハイライト形式で記述され、ファイル名付きハイライトは使用されていないため問題なし。PRリンクも正しくマークダウンリンク化されています。

対象読者への適合性 ✓ PASS

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

Tailwind CSS の開発者向けに専門用語で説明されており、初心者向けの過度な解説はありません。

パラグラフ・ライティング ⚠ WARNING

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

各セクションは冒頭の総論パラグラフがありトピックセンテンスも適切ですが、"背景" と "技術的な変更" のセクションに明確な結論パラグラフが欠如しています。段落の長さや空行は問題ありません。

Diff内容との照合 ⚠ WARNING

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

記事内のdiffブロックは utilities.ts の変更を正確に示していますが、提供されたDiffのうち test ファイルの変更は掲載されていません。主要な変更はカバーされていますが、完全な照合ができていません。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「bare value」「spacing scale」「handleBareValue」などの用語は PR と一致しており、誤用はありません。

説明の技術的正確性 ✓ PASS

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

記事の主張は PR の説明と Diff の内容に基づいており、技術的に誤りはありません。

事実の突合 ✓ PASS

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

すべての事実は PR タイトル、説明、Diff に裏付けられており、外部情報や推測は含まれていません。

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

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

PR 番号 #20229 だけが記載されており、他に数値や固有名詞の誤りはありません。

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

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

記事タイトルは PR の内容を正確に要約しています。

外部知識の正確性 ✓ PASS

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

記事に LTS、リリース日程等の外部知識は記載されていません。

時間表現の正確性 ✓ PASS

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

時間表現に関する記載はなく、矛盾もありません。