デフォルトトランジションをトークンに統一し、アコーディオンとタイム入力のモーションを調整

shoelace-style/webawesome

このPRは、<wa-accordion-item><wa-time-input> など複数コンポーネントのデフォルト CSS カスタムプロパティを、ハードコーディングされたミリ秒値から --wa-transition-* トークン へ置き換えています。デザインシステムのトークンと実装が乖離していた部分を解消し、モーションの一貫性と保守性を向上させます。

背景

コンポーネント群はこれまで 200ms100ms といったリテラル値や ease キーワードを直接使用しており、デザインシステムで定義された --wa-transition-* トークンから逸脱していました。PR #2423 で既存コンポーネントのトークン化が行われたものの、v3.8.0 で追加された <wa-accordion>, <wa-accordion-item>, <wa-known-date>, <wa-time-input> のうち二つはハードコードが残っていました。これにより、実際のアニメーション速度が設計とずれ、開発者が独自に上書きしなければならない状況が生じていました。

技術的な変更

<wa-accordion-item> のスタイル更新

packages/webawesome/src/components/accordion-item/accordion-item.styles.ts で、--show-duration--hide-duration200ms から var(--wa-transition-normal) に、--easingease から var(--wa-transition-easing) に置き換えました。

:host {
  --show-duration: var(--wa-transition-normal);
  --hide-duration: var(--wa-transition-normal);
  --easing: var(--wa-transition-easing);
}

同ファイルの TypeScript 実装 (accordion-item.ts) でも JSDoc コメントが新しいトークン表記に更新され、デフォルト値の説明が一致するように修正されています。

* @cssproperty [--show-duration=var(--wa-transition-normal)] - The duration of the expand animation.
* @cssproperty [--hide-duration=var(--wa-transition-normal)] - The duration of the collapse animation.
* @cssproperty [--easing=var(--wa-transition-easing)] - The easing of the expand/collapse animation.

<wa-time-input> のスタイル更新

packages/webawesome/src/components/time-input/time-input.styles.ts では、--show-duration--hide-duration100ms から var(--wa-transition-fast) に変更し、アニメーションの ease キーワードも var(--wa-transition-easing) に置き換えました。

:host {
  --show-duration: var(--wa-transition-fast);
  --hide-duration: var(--wa-transition-fast);
}
.time-input-popup::part(popup).show {
  animation: wa-time-input-show var(--show-duration) var(--wa-transition-easing);
}
.time-input-popup::part(popup).hide {
  animation: wa-time-input-hide var(--hide-duration) var(--wa-transition-easing);
}

time-input.ts のプロパティコメントも同様にトークン表記へ更新されています。

* @cssproperty [--show-duration=var(--wa-transition-fast)] - The duration of the show animation.
* @cssproperty [--hide-duration=var(--wa-transition-fast)] - The duration of the hide animation.

変更対象コンポーネントの一覧

  • <wa-accordion-item>(パネルパターン)
  • <wa-time-input>(ポップアップパターン)

これらはデフォルトのモーションパラメータが --wa-transition-normal または --wa-transition-fast に統一された唯一の対象です。その他の新規コンポーネントは既にトークンを使用しており、本PR では変更がありません。

設計判断

デフォルト値を新規プロパティとして追加するのではなく、既存の --show-duration, --hide-duration, --easing をトークン参照へ置換する方針が採られました。これは、既存のカスタマイズ手段(上書き用カスタムプロパティ)を保持しつつ、デザインシステムと実装の乖離を解消する最小限の変更です。トークンは一元管理された値であるため、将来的なデザイン変更があってもコンポーネント側のコード修正は不要になります。

まとめ

このPR は、ハードコードされたモーションパラメータを --wa-transition-* トークン に統一し、デザインシステムと実装の整合性を回復させました。デフォルトのアニメーション速度が約50 ms 速くなることで、ユーザー体感が向上すると同時に、開発者は既存のカスタムプロパティで自由に上書き可能なままです。

記事メタデータ

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

この記事は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リンク記法の正確性

コードブロックは `言語:ファイルパス` 形式で正しく記述され、GitHubリンクは PR 番号がリンク化されている。

対象読者への適合性 ✓ PASS

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

技術的な記述が中心で、エンジニア向けに適切なレベルで書かれている。初心者向けの余計な解説はない。

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

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

各セクションが総論→各論→結論の流れになっており、段落は1トピック・短めで、トピックセンテンスが先頭に配置されている。空行で区切られている。

Diff内容との照合 ✓ PASS

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

記事中のコードブロックは提供された Diff の変更点と一致している。抜粋であっても内容は正確で省略による理解障害はない。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「トークン」「カスタムプロパティ」「duration」「easing」などの用語は PR で使用されているものと一致し、誤用はない。

説明の技術的正確性 ✓ PASS

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

技術的な説明は Diff と PR の記述に基づき、根拠があり論理的。速度が約50 ms 速くなるという記述も PR の「~50ms sooner」に合致している。

事実の突合 ✓ PASS

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

全ての主張は PR タイトル・説明・Diff で裏付けられている。外部知識の付加はなく、ハルシネーションはなし。

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

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

PR 番号(#2485)や速度改善量(約50 ms)などの数値は正確。

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

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

記事タイトルは PR の内容(トランジションのトークン化とモーション調整)を日本語で適切に表現している。

外部知識の正確性 ✓ PASS

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

バージョンサポートやリリース日程等、PR に記載されていない外部情報は含まれていない。

時間表現の正確性 ✓ PASS

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

時間表現のずれはなく、PR の「~50ms sooner」等と一致している。