---
generated_at: 2026-02-18 14:30:00
metrics:
  claims_total: 126
  claims_with_evidence: 126
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `frontend/packages/ui/src/components/Button/Button.tsx` - Buttonコンポーネント実装
- E-02: `frontend/packages/ui/src/components/Input/Input.tsx` - Inputコンポーネント実装
- E-03: `frontend/packages/ui/src/components/Avatar/Avatar.tsx` - Avatarコンポーネント実装
- E-04: `frontend/packages/ui/src/components/Avatar/AvatarWithImage.tsx` - AvatarWithImageコンポーネント実装
- E-05: `frontend/packages/ui/src/components/Toast/Toast.tsx` - Toastコンポーネント・Provider実装
- E-06: `frontend/packages/ui/src/components/Toast/useToast.tsx` - useToastフック実装
- E-07: `frontend/packages/ui/src/components/Toast/types.ts` - Toast型定義
- E-08: `frontend/packages/ui/src/components/Spinner/Spinner.tsx` - Spinnerコンポーネント実装
- E-09: `frontend/packages/ui/src/components/Skeleton/Skeleton.tsx` - Skeletonコンポーネント実装
- E-10: `frontend/packages/ui/src/components/Select/Select.tsx` - Selectコンポーネント群実装
- E-11: `frontend/packages/ui/src/components/RadioGroup/RadioGroup.tsx` - RadioGroupコンポーネント実装
- E-12: `frontend/packages/ui/src/components/Popover/Popover.tsx` - Popoverコンポーネント実装
- E-13: `frontend/packages/ui/src/components/IconButton/IconButton.tsx` - IconButtonコンポーネント実装
- E-14: `frontend/packages/ui/src/components/DropdownMenu/DropdownMenu.tsx` - DropdownMenuコンポーネント群実装
- E-15: `frontend/packages/ui/src/components/Drawer/Drawer.tsx` - Drawerコンポーネント実装
- E-16: `frontend/packages/ui/src/components/ContextMenu/ContextMenu.tsx` - ContextMenuコンポーネント実装
- E-17: `frontend/packages/ui/src/components/Collapsible/Collapsible.tsx` - Collapsibleコンポーネント実装
- E-18: `frontend/packages/ui/src/components/Code/Code.tsx` - Codeコンポーネント実装
- E-19: `frontend/packages/ui/src/components/Callout/Callout.tsx` - Calloutコンポーネント実装
- E-20: `frontend/packages/ui/src/components/RoundBadge/RoundBadge.tsx` - RoundBadgeコンポーネント実装
- E-21: `frontend/packages/ui/src/components/RemoveButton/RemoveButton.tsx` - RemoveButtonコンポーネント実装
- E-22: `frontend/packages/ui/src/components/Resizable/Resizable.tsx` - Resizableコンポーネント群実装
- E-23: `frontend/packages/ui/src/components/Sidebar/Sidebar.tsx` - Sidebarコンポーネント群実装
- E-24: `frontend/packages/ui/src/components/CookieConsent/CookieConsent.tsx` - CookieConsentコンポーネント実装
- E-25: `frontend/packages/ui/src/components/BaseLayout/BaseLayout.tsx` - BaseLayoutコンポーネント実装
- E-26: `frontend/packages/ui/src/components/BaseGlobalNav/BaseGlobalNav.tsx` - BaseGlobalNavコンポーネント実装
- E-27: `frontend/packages/ui/src/components/BaseAppBar/BaseAppBar.tsx` - BaseAppBarコンポーネント実装
- E-28: `frontend/packages/ui/src/components/Tooltip/Tooltip.tsx` - Tooltipコンポーネント群実装
- E-29: `frontend/packages/ui/src/components/Tabs/Tabs.tsx` - Tabsコンポーネント群実装
- E-30: `frontend/packages/ui/src/components/Switch/Switch.tsx` - Switchコンポーネント実装
- E-31: `frontend/packages/ui/src/markers/CardinalityZeroOrManyLeftMarker.tsx` - マーカーコンポーネント実装
- E-32: `frontend/packages/ui/src/logos/LiamLogo.tsx` - ロゴコンポーネント実装

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

### Button コンポーネント (UT-PUI-001 - UT-PUI-010)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | デフォルトプロパティでボタンがレンダリングされる | E-01: variant = 'solid-primary', size = 'sm' (L7-9, L23-28) | ○ |
| C-02 | 全てのvariantが正しいクラス名を適用する | E-01: ts-patternによるvariantマッチング (L46-53) | ○ |
| C-03 | 全てのsizeが正しいクラス名を適用する | E-01: ts-patternによるsizeマッチング (L55-60) | ○ |
| C-04 | leftIconが表示される | E-01: leftIcon && <div className={styles.icon}>{leftIcon}</div> (L75) | ○ |
| C-05 | rightIconが表示される | E-01: rightIcon && <div className={styles.icon}>{rightIcon}</div> (L77) | ○ |
| C-06 | isLoading時にSpinnerが表示される(leftIcon) | E-01: isLoading && loadingIndicatorType === 'leftIcon' (L37-42) | ○ |
| C-07 | isLoading時にchildrenがSpinnerに置換される | E-01: isLoading && loadingIndicatorType === 'content' (L43-44) | ○ |
| C-08 | isLoading時にボタンがdisabledになる | E-01: disabled = propsDisabled || isLoading (L36) | ○ |
| C-09 | disabled時にボタンがdisabledになる | E-01: disabled={disabled} (L72) | ○ |
| C-10 | refが正しく転送される | E-01: ref={ref} (L64) | ○ |

### Input コンポーネント (UT-PUI-011 - UT-PUI-019)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | デフォルトプロパティで入力フィールドがレンダリングされる | E-02: type='text', align='left', size='md' (L17-19) | ○ |
| C-12 | 全てのsizeが正しいクラス名を適用する | E-02: ts-patternによるsizeマッチング (L30-34) | ○ |
| C-13 | leftIconが表示される | E-02: leftIcon && <div className={styles.icon}>{leftIcon}</div> (L47) | ○ |
| C-14 | rightIconが表示される | E-02: rightIcon && <div className={styles.icon}>{rightIcon}</div> (L60) | ○ |
| C-15 | align='right'で右寄せクラスが適用される | E-02: align === 'right' && styles.alignRight (L55) | ○ |
| C-16 | disabled時にdisabledスタイルが適用される | E-02: disabled && styles.disabled (L44) | ○ |
| C-17 | readOnly時にreadOnlyスタイルが適用される | E-02: readOnly && styles.readOnly (L42) | ○ |
| C-18 | error時にerrorスタイルが適用される | E-02: error && styles.error (L45) | ○ |
| C-19 | refが正しく転送される | E-02: ref={ref} (L50) | ○ |

### Avatar コンポーネント (UT-PUI-020 - UT-PUI-030)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | デフォルトプロパティでアバターがレンダリングされる | E-03: size='md', user='you' (L53-54) | ○ |
| C-21 | 全てのsizeが正しいクラス名を適用する | E-03: ts-patternによるsizeマッチング (L60-68) | ○ |
| C-22 | user='you'で正しい背景色が適用される | E-03: 'you' => 'var(--collaborator-color-you)' (L74) | ○ |
| C-23 | collaboratorユーザーで正しい背景色が適用される | E-03: 'collaborator-1'から'collaborator-11'のマッピング (L75-86) | ○ |
| C-24 | colorプロパティが優先される | E-03: color ? color : match... (L71-73) | ○ |
| C-25 | user='jack'でUserAvatarIconが表示される | E-03: if (user === 'jack') return <UserAvatarIcon /> (L90-103) | ○ |
| C-26 | onClickハンドラが呼び出される | E-03: onClick={onClick} (L95, L109) | ○ |
| C-27 | getAvatarUserFromColorが正しくマッピングする | E-03: colorMap定義 (L31-39) | ○ |
| C-28 | 範囲外のcolorNumでデフォルト値が返される | E-03: colorMap[colorNum] || 'you' (L40) | ○ |
| C-29 | AvatarWithImageが画像付きでレンダリングされる | E-04: <img src={src} alt={alt} /> (L59-66) | ○ |
| C-30 | AvatarWithImageの全てのsizeが適用される | E-04: ts-patternによるsizeマッチング (L41-49) | ○ |

### Toast コンポーネント (UT-PUI-031 - UT-PUI-038)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | Toastが指定されたステータスでレンダリングされる | E-05: status === 'success' && styles.success (L31) | ○ |
| C-32 | descriptionが指定された場合に表示される | E-05: description && <RadixToast.Description> (L40-44) | ○ |
| C-33 | isOpen=falseでToastが非表示になる | E-05: open={isOpen} (L37) | ○ |
| C-34 | 各ステータスに正しいクラスが適用される | E-05: status === 'error', 'warning', 'info' (L32-34) | ○ |
| C-35 | createToastItemが新しいトーストを作成する | E-05: setToastItem({ ...options, isOpen: true }) (L89) | ○ |
| C-36 | closeToastItemがトーストを閉じる | E-05: setToastItem(prev => ({...prev, isOpen: false})) (L84) | ○ |
| C-37 | useToastがposition='header'でheaderToastを返す | E-06: case 'header': return headerToast (L8-9) | ○ |
| C-38 | useToastがposition='command-palette'でcommandPaletteToastを返す | E-06: case 'command-palette': return commandPaletteToast (L10-11) | ○ |

### Spinner コンポーネント (UT-PUI-039 - UT-PUI-041)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | デフォルトサイズでスピナーがレンダリングされる | E-08: size = '16' (L60) | ○ |
| C-40 | 指定されたサイズでスピナーがレンダリングされる | E-08: style={{ width: size, height: size }} (L64-67) | ○ |
| C-41 | aria-labelが設定されている | E-08: aria-label="loading" (L17) | ○ |

### Skeleton コンポーネント (UT-PUI-042 - UT-PUI-046)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | variant='box'で正しくレンダリングされる | E-09: .with({ variant: 'box' }, ...) (L66-80) | ○ |
| C-43 | variant='circle'で正しくレンダリングされる | E-09: .with({ variant: 'circle' }, ...) (L81-95) | ○ |
| C-44 | variant='text'で指定行数分レンダリングされる | E-09: keys.map((key) => <div key={key}...>) (L49-57) | ○ |
| C-45 | startColor/endColorが適用される | E-09: '--skeleton-start': startColor, '--skeleton-end': endColor (L67-70) | ○ |
| C-46 | noOfLines=0で空のテキストスケルトンがレンダリングされる | E-09: Array.from({ length: noOfLines }, ...) (L34) | ○ |

### Select コンポーネント (UT-PUI-047 - UT-PUI-050)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | SelectTriggerが正しくレンダリングされる | E-10: <SelectPrimitive.Trigger> with ChevronDown (L22-33) | ○ |
| C-48 | SelectContentがポータル内にレンダリングされる | E-10: <SelectPrimitive.Portal> (L69) | ○ |
| C-49 | position='popper'でpopperスタイルが適用される | E-10: position === 'popper' && styles.contentPopper (L74) | ○ |
| C-50 | SelectItemが正しくレンダリングされる | E-10: <SelectPrimitive.Item> with Check icon (L107-124) | ○ |

### RadioGroup コンポーネント (UT-PUI-051 - UT-PUI-054)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | RadioGroupが正しくレンダリングされる | E-11: <RadioGroupPrimitive.Root> (L14-21) | ○ |
| C-52 | RadioGroupItemが正しくレンダリングされる | E-11: <RadioGroupPrimitive.Item> (L43-57) | ○ |
| C-53 | labelがない場合にラベルがレンダリングされない | E-11: label && (<label>...) (L49-52) | ○ |
| C-54 | idが指定された場合にその値が使用される | E-11: const itemId = id ?? props.value (L39) | ○ |

### Popover コンポーネント (UT-PUI-055)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | PopoverContentが正しくレンダリングされる | E-12: <PopoverPrimitive.Content> (L24-30) | ○ |

### IconButton コンポーネント (UT-PUI-056 - UT-PUI-060)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | アイコンボタンがツールチップ付きでレンダリングされる | E-13: <TooltipProvider><TooltipRoot>... (L46-68) | ○ |
| C-57 | 全てのsizeが正しいクラス名を適用する | E-13: ts-patternによるsizeマッチング (L34-37) | ○ |
| C-58 | variant='hoverBackground'が正しいクラス名を適用する | E-13: 'hoverBackground' => styles.hoverBackground (L41) | ○ |
| C-59 | disabled時にツールチップが表示されない | E-13: {!props.disabled && (<TooltipPortal>...)} (L60-66) | ○ |
| C-60 | childrenが追加テキストとして表示される | E-13: {children && <span>{children}</span>} (L57) | ○ |

### DropdownMenu コンポーネント (UT-PUI-061 - UT-PUI-065)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | DropdownMenuContentが正しくレンダリングされる | E-14: <Content {...props} ref={ref}> (L32) | ○ |
| C-62 | DropdownMenuItemがデフォルト設定でレンダリングされる | E-14: variant='default', size='md' (L45-46) | ○ |
| C-63 | variant='danger'が正しいクラス名を適用する | E-14: 'danger' => styles.danger (L60) | ○ |
| C-64 | leftIconが表示される | E-14: {leftIcon && (<span>...)} (L69-71) | ○ |
| C-65 | DropdownMenuRadioItemが正しくレンダリングされる | E-14: <RadioItem> with Check icon (L91-101) | ○ |

### Drawer コンポーネント (UT-PUI-066)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | DrawerContentが正しくレンダリングされる | E-15: <Drawer.Content> (L22-28) | ○ |

### ContextMenu コンポーネント (UT-PUI-067 - UT-PUI-068)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | コンテキストメニューが正しくレンダリングされる | E-16: <ContextMenuPrimitive.Root> (L17-31) | ○ |
| C-68 | onClickハンドラが呼び出される | E-16: onClick={onClick} (L24) | ○ |

### Code コンポーネント (UT-PUI-069 - UT-PUI-072)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | デフォルトプロパティでコードがレンダリングされる | E-18: variant='default', style='outline', size='md' (L14-16) | ○ |
| C-70 | variant='primary'が正しいクラス名を適用する | E-18: styles[variant] (L22) | ○ |
| C-71 | style='fill'が正しいクラス名を適用する | E-18: styles[style] (L23) | ○ |
| C-72 | 全てのsizeが正しいクラス名を適用する | E-18: styles[size] (L24) | ○ |

### Callout コンポーネント (UT-PUI-073 - UT-PUI-077)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-73 | デフォルトプロパティでCalloutがレンダリングされる | E-19: variant='default', device='default' (L25-26) | ○ |
| C-74 | 各variantが正しいクラス名を適用する | E-19: const variantClassName = styles[variant] (L30) | ○ |
| C-75 | device='mobile'が正しいクラス名を適用する | E-19: device === 'mobile' ? styles.mobile : '' (L31) | ○ |
| C-76 | iconが指定された場合にそのアイコンが使用される | E-19: const iconToRender = icon || <InfoIcon /> (L34) | ○ |
| C-77 | iconがない場合にデフォルトのInfoIconが使用される | E-19: const iconToRender = icon || <InfoIcon /> (L34) | ○ |

### RoundBadge コンポーネント (UT-PUI-078 - UT-PUI-083)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-78 | デフォルトプロパティでバッジがレンダリングされる | E-20: variant='default' (L27) | ○ |
| C-79 | 各variantが正しいクラス名を適用する | E-20: styles[variant] (L38) | ○ |
| C-80 | showCap=trueでmaxValue超過時に'99+'が表示される | E-20: children > maxValue ? `${maxValue}+` : children (L32-35) | ○ |
| C-81 | showCap=falseで数値がそのまま表示される | E-20: typeof children === 'number' && showCap && ... (L32) | ○ |
| C-82 | 数値がmaxValueと等しい場合にそのまま表示される | E-20: children > maxValue (L33) | ○ |
| C-83 | 文字列childrenがそのまま表示される | E-20: typeof children === 'number' (L32) - 文字列の場合はそのまま | ○ |

### RemoveButton コンポーネント (UT-PUI-084 - UT-PUI-088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | デフォルトプロパティで削除ボタンがレンダリングされる | E-21: variant='transparent', size='sm' (L16-17) | ○ |
| C-85 | variant='solid'が正しいクラス名を適用する | E-21: styles[variant] (L26) | ○ |
| C-86 | size='md'が正しいクラス名を適用する | E-21: styles[size] (L27) | ○ |
| C-87 | aria-labelがデフォルトで'Remove'に設定される | E-21: 'aria-label': ariaLabel = 'Remove' (L18) | ○ |
| C-88 | カスタムaria-labelが設定できる | E-21: aria-label={ariaLabel} (L30) | ○ |

### Resizable コンポーネント (UT-PUI-089 - UT-PUI-093)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-89 | パネルグループが正しくレンダリングされる | E-22: <ResizablePrimitive.PanelGroup> (L13-16) | ○ |
| C-90 | パネルが正しくレンダリングされる | E-22: <ResizablePrimitive.Panel> (L28-32) | ○ |
| C-91 | isResizing=trueでアニメーションクラスが適用されない | E-22: !isResizing && styles.panelAnimating (L30) | ○ |
| C-92 | ハンドルが正しくレンダリングされる | E-22: <ResizablePrimitive.PanelResizeHandle> (L45-54) | ○ |
| C-93 | withHandle=trueでグリップアイコンが表示される | E-22: {withHandle && (<div>...GripVertical)} (L49-52) | ○ |

### Sidebar コンポーネント (UT-PUI-094 - UT-PUI-104)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-94 | SidebarProviderが正しくレンダリングされる | E-23: <SidebarContext.Provider> (L110-121) | ○ |
| C-95 | toggleSidebarがonOpenChangeを呼び出す | E-23: onOpenChange?.(!open) (L70) | ○ |
| C-96 | キーボードショートカットでtoggleSidebarが呼び出される | E-23: event.key === SIDEBAR_KEYBOARD_SHORTCUT (L77) | ○ |
| C-97 | useSidebarが正しいコンテキスト値を返す | E-23: return ok(context) (L50) | ○ |
| C-98 | useSidebarがSidebarProvider外でエラーを返す | E-23: return err(new Error('...')) (L47) | ○ |
| C-99 | collapsible='none'でシンプルなdivがレンダリングされる | E-23: if (collapsible === 'none') return <div>... (L142-148) | ○ |
| C-100 | state='expanded'でdata-stateが設定される | E-23: data-state={state} (L153) | ○ |
| C-101 | SidebarTriggerが正しくレンダリングされる | E-23: <button>...<PanelLeft> (L188-198) | ○ |
| C-102 | クリック時にtoggleSidebarが呼び出される | E-23: onClick={toggleSidebar} (L194) | ○ |
| C-103 | isActive=trueでdata-activeが設定される | E-23: data-active={isActive} (L375) | ○ |
| C-104 | tooltipが指定された場合にツールチップが表示される | E-23: if (typeof tooltip === 'string') ... (L385-400) | ○ |

### CookieConsent コンポーネント (UT-PUI-105 - UT-PUI-108)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-105 | open=trueでコンポーネントがレンダリングされる | E-24: if (!open) return null (L16) | ○ |
| C-106 | open=falseでnullが返される | E-24: if (!open) return null (L16) | ○ |
| C-107 | AcceptボタンクリックでonClickAcceptが呼び出される | E-24: onClick={onClickAccept} (L44) | ○ |
| C-108 | RejectボタンクリックでonClickDenyが呼び出される | E-24: onClick={onClickDeny} (L38) | ○ |

### BaseLayout コンポーネント (UT-PUI-109)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-109 | レイアウトが正しくレンダリングされる | E-25: {globalNav}{appBar}{children} (L20-24) | ○ |

### BaseGlobalNav コンポーネント (UT-PUI-110 - UT-PUI-113)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-110 | グローバルナビゲーションが正しくレンダリングされる | E-26: <nav>...<div>{logoSection}</div> (L26-29) | ○ |
| C-111 | navContentが指定された場合にレンダリングされる | E-26: {navContent && <div>...} (L30) | ○ |
| C-112 | footerContentが指定された場合にレンダリングされる | E-26: {footerContent && <div>...} (L31-33) | ○ |
| C-113 | enableHover=falseでdata-disable-hoverが設定される | E-26: data-disable-hover={!enableHover || undefined} (L24) | ○ |

### BaseAppBar コンポーネント (UT-PUI-114 - UT-PUI-116)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-114 | アプリバーが正しくレンダリングされる | E-27: {leftContent && ...}{rightContent && ...} (L18-21) | ○ |
| C-115 | leftContentのみの場合に左セクションのみレンダリングされる | E-27: {leftContent && <div>...} (L18) | ○ |
| C-116 | rightContentのみの場合に右セクションのみレンダリングされる | E-27: {rightContent && <div>...} (L19-21) | ○ |

### Tooltip コンポーネント (UT-PUI-117 - UT-PUI-118)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-117 | デフォルトのdelayDurationが100msに設定される | E-28: <Provider delayDuration={100}> (L29) | ○ |
| C-118 | ツールチップコンテンツが正しくレンダリングされる | E-28: <Content {...props} ref={ref}> (L19) | ○ |

### Tabs コンポーネント (UT-PUI-119 - UT-PUI-121)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-119 | Tabsルートが正しくレンダリングされる | E-29: <Root {...props} ref={ref} /> (L12) | ○ |
| C-120 | タブトリガーが正しくレンダリングされる | E-29: <Trigger {...props} ref={ref} /> (L32) | ○ |
| C-121 | タブコンテンツが正しくレンダリングされる | E-29: <Content {...props} ref={ref} /> (L42) | ○ |

### マーカー・ロゴ コンポーネント (UT-PUI-122 - UT-PUI-126)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-122 | マーカーが正しくレンダリングされる | E-31: <svg><defs><marker id={id}>... (L14-55) | ○ |
| C-123 | isHighlighted=trueでテキスト要素が表示される | E-31: {isHighlighted && (<text>n</text>)} (L42-52) | ○ |
| C-124 | isHighlighted=falseでテキスト要素が表示されない | E-31: {isHighlighted && ...} 条件付きレンダリング (L42) | ○ |
| C-125 | ロゴが正しくレンダリングされる | E-32: <svg role="img" aria-label="Liam Logo"> (L7-9) | ○ |
| C-126 | aria-label='Liam Logo'が設定されている | E-32: aria-label="Liam Logo" (L9) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースがソースコードの実装に基づいて生成されています。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードの直接的な根拠に基づいています。
- UIコンポーネントのため、ビジネスロジックは限定的で、主にレンダリングとスタイリングの検証が中心です。
- Radix UIなどのサードパーティライブラリのラッパーコンポーネントが多いため、内部動作はライブラリに依存しています。

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースのカバレッジが十分か確認（全コンポーネント、全プロパティ）
- [ ] 優先度の割り当てが適切か確認（ビジネス影響度に基づく）
- [ ] テスト観点（正常系/異常系/境界値）のバランスが適切か確認
- [ ] アクセシビリティ関連のテストケースが含まれているか確認
- [ ] 各コンポーネントのref転送テストが含まれているか確認
