---
generated_at: 2026-02-24 12:00:00
metrics:
  claims_total: 55
  claims_with_evidence: 55
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：apps-ui-giselles-ai 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：55 / 55、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全テストケースに根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `apps/ui.giselles.ai/app/nav-link.tsx` - NavLinkコンポーネント（29行）
- E-02: `apps/ui.giselles.ai/app/components/ui-page.tsx` - UiPageコンポーネント（18行）
- E-03: `apps/ui.giselles.ai/app/components/giselle-icon.tsx` - GiselleIconコンポーネント（35行）
- E-04: `apps/ui.giselles.ai/app/components/demo-section.tsx` - DemoSectionコンポーネント（17行）
- E-05: `apps/ui.giselles.ai/app/layout.tsx` - RootLayoutコンポーネント（100行）
- E-06: `apps/ui.giselles.ai/app/page.tsx` - HomePageコンポーネント（5行）
- E-07: `apps/ui.giselles.ai/app/toast/page.tsx` - ToastDemoコンポーネント（234行）
- E-08: `apps/ui.giselles.ai/app/search-input/page.tsx` - SearchInputPageコンポーネント（29行）
- E-09: `apps/ui.giselles.ai/app/button/page.tsx` - ButtonPageコンポーネント（34行）
- E-10: `apps/ui.giselles.ai/app/input/page.tsx` - InputPageコンポーネント（13行）
- E-11: `apps/ui.giselles.ai/app/dialog/page.tsx` - DialogPageコンポーネント（46行）
- E-12: `apps/ui.giselles.ai/app/select/page.tsx` - SelectPageコンポーネント（73行）
- E-13: `apps/ui.giselles.ai/app/dropdown-menu/page.tsx` - DropdownMenuPageコンポーネント（73行）
- E-14: `apps/ui.giselles.ai/app/popover/page.tsx` - PopoverPageコンポーネント（18行）
- E-15: `apps/ui.giselles.ai/app/toggle/page.tsx` - TogglePageコンポーネント（21行）
- E-16: `apps/ui.giselles.ai/app/table/page.tsx` - TablePageコンポーネント（48行）
- E-17: `apps/ui.giselles.ai/app/status-badge/page.tsx` - StatusBadgePageコンポーネント（123行）
- E-18: `apps/ui.giselles.ai/next.config.ts` - Next.js設定ファイル（7行）

## 3) Claims と根拠の対応（レビューの主戦場）

### NavLinkコンポーネント（UT-UIG-001〜006）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | NavLinkはアクティブ状態でdata-state='active'を設定する | E-01: L24 `data-state={pathname === props.pathname ? "active" : "inactive"}` | ○ |
| C-02 | NavLinkは非アクティブ状態でdata-state='inactive'を設定する | E-01: L24 条件分岐で'inactive'を設定 | ○ |
| C-03 | NavLinkはchildren要素をレンダリングする | E-01: L26 `{props.children}` | ○ |
| C-04 | NavLinkはhref属性にpathnameを設定する | E-01: L23 `href={props.pathname}` | ○ |
| C-05 | NavLinkは空のpathnameも受け付ける | E-01: L8-9 型定義で空文字列を排除していない | ○ |
| C-06 | NavLinkはルートパス'/'を正しく処理する | E-01: L24 単純な文字列比較で判定 | ○ |

### UiPageコンポーネント（UT-UIG-007〜010）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-07 | UiPageはtitleをPageHeading内に表示する | E-02: L12-14 `<PageHeading>{title}</PageHeading>` | ○ |
| C-08 | UiPageはchildrenをspace-y-8クラスのdiv内にレンダリング | E-02: L15 `<div className="space-y-8">{children}</div>` | ○ |
| C-09 | UiPageは空のtitleでもエラーなくレンダリング | E-02: title propに制約なし | ○ |
| C-10 | UiPageは長いtitleも表示可能 | E-02: 文字数制限の実装なし | ○ |

### GiselleIconコンポーネント（UT-UIG-011〜014）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | GiselleIconは24x24のSVGをレンダリング | E-03: L6-7 `width="24" height="24"` | ○ |
| C-12 | GiselleIconはカスタムpropsを受け付ける | E-03: L10 `{...props}` でスプレッド | ○ |
| C-13 | GiselleIconはtitle要素を設定する | E-03: L12 `<title>Giselle Icon</title>` | ○ |
| C-14 | GiselleIconはcurrentColorをfillに使用 | E-03: L16, L23 `fill="currentColor"` | ○ |

### DemoSectionコンポーネント（UT-UIG-015〜018）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 | DemoSectionはlabelをtext-smクラスのpタグ内に表示 | E-04: L11 `<p className="text-text mb-2 text-sm">{label}</p>` | ○ |
| C-16 | DemoSectionはchildrenをborder付きコンテナ内に表示 | E-04: L12 `<div className="...border border-border...">` | ○ |
| C-17 | DemoSectionは空のlabelでもエラーなくレンダリング | E-04: label propに制約なし | ○ |
| C-18 | DemoSectionは複数childrenをspace-y-4で表示 | E-04: L13 `<div className="space-y-4">{children}</div>` | ○ |

### RootLayout/layout.tsx（UT-UIG-019〜023）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | RootLayoutは10個のNavLinkをレンダリング | E-05: L7-48 componentsに10個定義、L83-87でmap | ○ |
| C-20 | RootLayoutはフォント変数を設定 | E-05: L64 `className={\`\${dmSans.variable} \${dmMono.variable}\`}` | ○ |
| C-21 | RootLayoutはホームリンクを含む | E-05: L71-80 `<Link href="/">`にGiselleIconとComponents | ○ |
| C-22 | RootLayoutはchildrenをmain内にレンダリング | E-05: L93 `<main className="max-w-4xl">{children}</main>` | ○ |
| C-23 | componentsリストは10個のコンポーネント定義を含む | E-05: L7-48 button, input, dialog, select, dropdown-menu, popover, toggle, table, toast, status-badge | ○ |

### HomePage（UT-UIG-024）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-24 | HomePageは'Home'テキストをp要素内に表示 | E-06: L4 `<p>Home</p>` | ○ |

### ToastDemo/ToastPage（UT-UIG-025〜031）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | ToastDemoはDemoSectionとButtonをレンダリング | E-07: L13-221 複数のDemoSectionとButton | ○ |
| C-26 | toast.infoでinfoトーストを表示 | E-07: L16 `toast.info("This is a default toast message")` | ○ |
| C-27 | タイトル付きトーストを表示可能 | E-07: L91-93 `toast.info("...", {title: "Upload Complete"})` | ○ |
| C-28 | アクション付きトーストを表示可能 | E-07: L104-113 `toast.info("...", {action: {...}})` | ○ |
| C-29 | 各トーストタイプ（info/success/warning/error）を表示 | E-07: L27-62 4種類のトーストタイプを使用 | ○ |
| C-30 | toast.errorでerrorトーストを表示 | E-07: L216 `toast.error("Third toast (error)")` | ○ |
| C-31 | ToastPageはToastProviderでラップ | E-07: L228 `<ToastProvider>` | ○ |

### SearchInputPage（UT-UIG-032〜035）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | SearchInputがplaceholder='Search...'でレンダリング | E-08: L15 `placeholder="Search..."` | ○ |
| C-33 | useStateで入力値を管理 | E-08: L9 `const [value, setValue] = useState("")` | ○ |
| C-34 | onChangeでsetValueを呼び出し | E-08: L17 `onChange={(e) => setValue(e.target.value)}` | ○ |
| C-35 | カスタムスタイルのSearchInputを表示 | E-08: L23-24 `className="rounded-[4px]"`, `iconClassName="hidden"` | ○ |

### ButtonPage（UT-UIG-036〜038）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | 各バリアント（Subtle, Filled, Solid, Glass, Outline）を表示 | E-09: L10-14 5つのvariantを使用 | ○ |
| C-37 | サイズバリアント（default, large）を表示 | E-09: L17-20 size="large"を使用 | ○ |
| C-38 | SparklesIconをleftIconとして設定 | E-09: L26 `leftIcon={<SparklesIcon />}` | ○ |

### InputPage（UT-UIG-039）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | Inputをplaceholder='Type here...'で表示 | E-10: L9 `<Input placeholder="Type here..." />` | ○ |

### DialogPage（UT-UIG-040）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | Dialog関連コンポーネントをレンダリング | E-11: L17-42 DialogTrigger, DialogContent, DialogTitle等を使用 | ○ |

### SelectPage（UT-UIG-041〜042）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | 基本的なSelectをオプション付きで表示 | E-12: L19-28 apple, banana, melonオプション | ○ |
| C-42 | アイコン付きSelectを表示 | E-12: L31-41 icon propを持つオプション | ○ |

### DropdownMenuPage（UT-UIG-043〜045）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | 基本的なDropdownMenuを表示 | E-13: L13-20 基本的なitems | ○ |
| C-44 | グループ化されたDropdownMenuを表示 | E-13: L22-57 groupId, groupLabelを使用 | ○ |
| C-45 | onSelectコールバックを設定 | E-13: L54-56 `onSelect={(_event, option) => {...}}` | ○ |

### PopoverPage（UT-UIG-046）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | Popoverをtriggerとchildren付きで表示 | E-14: L12-14 `<Popover trigger={...}>{children}</Popover>` | ○ |

### TogglePage（UT-UIG-047〜048）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | 基本的なToggleを表示 | E-15: L9 `<Toggle name="toggle" />` | ○ |
| C-48 | ラベル付きToggleを表示 | E-15: L12-17 childrenにlabelとdividerを含む | ○ |

### TablePage（UT-UIG-049〜050）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | Table関連コンポーネントをレンダリング | E-16: L18-44 Table, TableHeader, TableBody, TableFooter, TableCaption | ○ |
| C-50 | 2行のテーブルデータを表示 | E-16: L26-36 John DoeとJane Doeの2行 | ○ |

### StatusBadgePage（UT-UIG-051〜054）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | 各ステータスバリアントを表示 | E-17: L17-21 success, error, warning, info, ignored | ○ |
| C-52 | leftIcon付きバッジを表示 | E-17: L24-38 各ステータスにleftIconを設定 | ○ |
| C-53 | rightIcon付きバッジを表示 | E-17: L40-55 各ステータスにrightIconを設定 | ○ |
| C-54 | dotバリアントのバッジを表示 | E-17: L91-105 variant="dot"を設定 | ○ |

### next.config.ts（UT-UIG-055）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | NextConfig型のオブジェクトをエクスポート | E-18: L3-5 `const nextConfig: NextConfig = {...}` | ○ |

## 4) 不足情報（Unknown / Missing）
- 特になし：全テストケースに対してソースコードが根拠として存在

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 本モジュールはUIコンポーネントのショーケース/デモアプリケーションであり、ビジネスロジックを含まない
- 0: 低リスク - 外部パッケージ（@giselle-internal/ui）のコンポーネントを使用したデモページが中心
- 0: 低リスク - 状態管理はReact標準のuseStateのみで単純

## 6) レビュアーチェックリスト（最小）
- [ ] NavLinkコンポーネントのアクティブ/非アクティブ判定ロジックが正しいか（L24の条件式）
- [ ] ToastDemoコンポーネントの各トーストタイプ（info/success/warning/error）のテストケースが網羅されているか
- [ ] SearchInputPageのuseState管理のテストケースが適切か
- [ ] 境界値テストケース（空文字列、長文、空配列等）が適切に定義されているか
- [ ] 外部UIコンポーネントのpropsが正しくテスト対象として認識されているか
