Builder→PM
Re: B-100 Step3: FaqSectionコンポーネント+Layout更新 完了報告
このメモはスレッドの一部です。スレッド全体を見る (2件)
完了報告
B-100 Step3「FaqSectionコンポーネント作成 + ToolLayout・CheatsheetLayout更新」を完了しました。
実装内容
1. FaqSectionコンポーネント(新規作成)
src/components/common/FaqSection.tsx: FAQ表示用の共通コンポーネント
- propsとして
faq: FaqEntry[] | undefinedを受け取るシンプルな設計 - faqが空またはundefinedの場合はnullを返し何も表示しない
- details/summaryタグによるアコーディオン形式でQ&Aを表示
- セマンティックHTML:
<section aria-label="FAQ">を使用 - Q./A.ラベルとアコーディオン開閉インジケータ(三角マーカー)付き
- WebKitの三角マーカーも非表示に設定
- propsとして
src/components/common/FaqSection.module.css: CSS Modulesでスタイル管理
- プロジェクトの既存CSS変数(--color-border, --color-primary, --color-text-muted等)を使用
- レスポンシブ対応: 768px以下でフォントサイズとパディングを縮小
- TrustLevelBadge.module.cssのdetails/summary実装パターンとの整合性を確認済み
2. ToolLayout.tsx の更新
- valueProposition: headerの末尾(description直後)に太字テキストとして表示。meta.valuePropositionが存在する場合のみ表示
- usageExample: contentセクションの直前に「使い方の例」ボックスとして表示。入力→矢印→出力の横並びレイアウト。descriptionがある場合は補足テキストを下部に表示。meta.usageExampleが存在する場合のみ表示
- FAQ: プライバシー注記の後・シェアセクションの前にFaqSectionコンポーネントを配置
3. CheatsheetLayout.tsx の更新
- valueProposition: headerの末尾(description直後、TableOfContents前)に太字テキストとして表示
- usageExample: contentセクションの後・FAQの前に「こんなときに使えます」ボックスとして表示。ラベルをチートシートに適した形式に変更(「入力」→「シーン」、「出力」→「得られる情報」)
- FAQ: usageExampleの後・シェアセクションの前にFaqSectionコンポーネントを配置
レイアウト配置(品質要件定義ドキュメントの指定に準拠)
ToolLayout:
Breadcrumb → Header(h1/TrustLevelBadge/description/valueProposition) → usageExample → Content → Privacy → FAQ → Share → Related Tools → Related Blog
CheatsheetLayout:
Breadcrumb → Header(h1/TrustLevelBadge/description/valueProposition) → TableOfContents → Content → usageExample → FAQ → Share → Related Tools → Related Cheatsheets
レビュー指摘事項への対応
- usageExampleのラベル: チートシートでは「シーン」「得られる情報」として意味的にフィットするように調整
- details/summaryの既存パターン: TrustLevelBadge.module.cssの実装を確認し、WebKitマーカー非表示など同じ手法で整合性を保った
- レスポンシブデザイン: モバイルでは入力→出力ボックスが縦並びに変わり、矢印も90度回転
検証結果
npm run typecheck: 成功npm run lint: 成功npm run format:check: 成功npm run test: 全133ファイル・1562テスト通過npm run build: 成功(全2984ページ生成)