プロモーション用バナー・ダイアログをBuild Awesome Kickstarter向けに刷新

shoelace-style/webawesome

Web Awesomeドキュメントサイトのサイト告知コンポーネントを、旧来のWAローンチセール用バナー・ダイアログからBuild Awesome Kickstarter告知用に入れ替えました。テンプレートの差し替えにとどまらず、CSSカスタムプロパティの設計も刷新されています。

背景

これまでドキュメントサイトには、Web Awesomeのローンチを祝う20%割引プロモーション用の _banner-wa-launch.njk_dialog-wa-launch.njk が組み込まれていました。これらはStripeの割引アクティブ状態とユーザーのProプラン保有状況を条件に表示するコンポーネントで、キャンペーン終了に伴い不要となっています。

新たに告知すべき内容は、静的サイトジェネレーターEleventyが「Build Awesome」としてリブランドされるKickstarterキャンペーンです。対象が変わったことで、表示条件の仕組み(Stripeの割引フラグ参照)から、シンプルなlocalStorageによる「一度見た」フラグ管理へと設計方針も変化しています。

技術的な変更

テンプレートの入れ替えは base.njk のinclude箇所2か所を変更するだけで完結し、ファイル命名規則も整理されています。

変更前:

{#- WA Launch Banner -#}
{% include "_banner-wa-launch.njk" ignore missing %}
...
{#- Site-Wide Dialog -#}
{% include "_dialog-wa-launch.njk" ignore missing %}

変更後:

{#- BA Kickstarter Banner -#}
{% include "banner-ba-kickstarter.njk" ignore missing %}
...
{#- BA Kickstarter Dialog -#}
{% include "dialog-ba-kickstarter.njk" ignore missing %}

ファイル名から先頭のアンダースコアが除かれ、プレフィックスも wa-launch から ba-kickstarter に統一されました。

新しいダイアログ dialog-ba-kickstarter.njk では、表示制御ロジックが大きく変わっています。旧ダイアログはStripeのAPIレスポンス(req.stripe.discount.active)を条件にNunjucksのサーバーサイドレンダリング段階で表示を制御していましたが、新ダイアログはその条件を廃止し、クライアントサイドのlocalStorageキー dialog-build-awesome-kickstarter-dismissed のみで管理します。また、ダイアログ内にはVimeoのiframeが埋め込まれており、loading="lazy" 属性と data-vimeo-src による遅延ロードが採用されています。

CSSの変更では、 docs.css からWAローンチ用のカスタムブランドカラー定義(--wa-color-brand-* の上書き)が47行削除されました。代わりに utils.css にユーティリティクラス .brand-build-awesome が追加され、Build Awesome固有のグリーン系カラーパレットが定義されています。ダークモード対応も .wa-dark .brand-build-awesome セレクターで明示的に記述されています。

.brand-build-awesome {
  --wa-color-brand-50: var(--brand-build-awesome-green);
  --wa-color-brand-60: #43a57d;
  --wa-color-brand: var(--wa-color-brand-60);
  --wa-color-brand-fill-loud: var(--wa-color-brand-50);
  /* ... */
}

.wa-dark .brand-build-awesome {
  --wa-color-brand-fill-quiet: var(--wa-color-brand-10);
  /* ... */
}

設計判断

ブランドカラーの定義場所が docs.css の特定IDセレクター(#dialog-site)から、utils.css の汎用クラス(.brand-build-awesome)へ移動した点は注目に値します。旧実装ではバナーとダイアログでそれぞれ同一の --wa-color-brand-* 上書きコードが重複していましたが、新実装ではクラスを付与するだけで両コンポーネントに一貫したブランドカラーが適用されます。

表示条件をサーバーサイドのStripe連携からクライアントサイドのlocalStorageに切り替えた判断は、バックエンドとの依存を排除しシンプルさを優先した設計です。Kickstarterキャンペーンは「見たら閉じる」という一方向のライフサイクルで十分なため、リアルタイムの外部APIを参照する必要がなくなっています。

まとめ

この変更は単なるコンテンツ差し替えにとどまらず、ブランドカラーの定義をIDセレクターからユーティリティクラスへ移行し、表示制御ロジックをサーバーサイドからクライアントサイドへ簡素化する設計改善も同時に行っています。.brand-build-awesome クラスの汎用化により、今後同様のブランドコンポーネントを追加する際の再利用性も高まっています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
96046e3c

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

品質レビュー結果

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

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)という「総論→各論→結論」の構成が記事全体と各セクションで明確に適用されており、非常に分かりやすいです。

カスタムMarkdown構文 ✓ PASS

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

ファイル名付きシンタックスハイライト(nunjucks:..., css:...)およびGitHubのPRリンク記法が正しく使用されています。

対象読者への適合性 ✓ PASS

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

CSSカスタムプロパティやNunjucksテンプレート、コンポーネント設計に関する内容は、専門知識を持つエンジニアという対象読者に完全に適合しています。

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

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

各段落がトピックセンテンスで始まり、1段落1トピックの原則が守られています。これにより、見出しと各段落の冒頭を読むだけで記事の骨子を掴める高い可読性を実現しています。

Diff内容との照合 ✓ PASS

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

記事内のコードブロックは、提供されたDiffの内容を正確に反映しています。特に、base.njkの変更点やutils.cssの追加箇所が的確に引用されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「CSSカスタムプロパティ」「ユーティリティクラス」「IDセレクター」「クライアントサイド」などの技術用語が、文脈に応じて正確かつ適切に使用されています。

説明の技術的正確性 ✓ PASS

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

旧実装のStripe連携による表示制御や、新実装のlocalStorageによる制御など、Diffから読み取れる技術的な変更内容が正確に説明されています。「docs.cssから47行削除」という具体的な数値もDiffと一致しています。

事実の突合 ✓ PASS

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

記事で述べられている主張はすべて、PRのタイトル、Diff内のコード変更(ファイル名、コードロジック、CSS定義)によって裏付けられており、ハルシネーションは見られません。

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

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

PR番号(#2111)、CSSの削除行数(47行)など、記事に含まれるすべての数値・固有名詞は正確です。

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

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

記事のタイトル「プロモーション用バナー・ダイアログをBuild Awesome Kickstarter向けに刷新」は、PRのタイトル「Add Build Awesome Promotions」の意図を汲み取り、より具体的に内容を表現しており、完全に一致しています。

外部知識の正確性 ✓ PASS

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

記事の内容はすべて提供されたPR情報に準拠しており、バージョンサポート状況やリリース日程といったPR外の外部知識の追記はありません。

時間表現の正確性 ✓ PASS

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

「これまで」「新たに」といった時間表現は、PRにおける旧コンポーネントの削除と新コンポーネントの追加という文脈を正確に反映しており、誤解を招く表現はありません。