# tabs.md — 5タブ骨格（Record / Graph / ＋ / Calendar / Share）

正とする実装: headache-no3 の SwiftUI（契約 0033 tab-shell で確定、0037 で入口整備）。
Android 移植はこのファイルの値のみを使い、値を発明しない。

## 出典

| 内容 | 出典パス |
|---|---|
| タブ定義・タブバー・設定ギア | `/Users/shun/git/development/headache-no3/app/HeadacheNo3/HeadacheNo3App/MainTabView.swift` |
| 色・書体・カード様式 | `/Users/shun/git/development/headache-no3/app/HeadacheNo3/HeadacheNo3App/DesignTokens.swift` |
| 起動フロー（同意→顔認証→Graph） | `/Users/shun/git/development/headache-no3/app/HeadacheNo3/HeadacheNo3App/HeadacheNo3App.swift`（AppRootView） |
| 契約文（設計意図） | `/Users/shun/git/development/headache-no3/roots/0033/contract.md` |

## 1. タブ構成

5枠の下タブ。**名前は英字表記のまま**（契約 0033 Goal:「下タブの名も各画面の左上の見出しも英語のまま」）。

順序（左→右）と定義（出典: MainTabView.swift `enum PatientTab` 3–39行）:

| 順 | case | 表示名 `englishTitle` | SF Symbol `systemImage` | accessibilityIdentifier |
|---|---|---|---|---|
| 1 | record | `Record` | `list.bullet.clipboard` | `tab.record` |
| 2 | graph | `Graph` | `chart.xyaxis.line` | `tab.graph` |
| 3 | add（中央） | `＋`（全角プラス） | `plus` | `tab.add` |
| 4 | calendar | `Calendar` | `calendar` | `tab.calendar` |
| 5 | share | `Share` | `square.and.arrow.up` | `tab.share` |

各タブの行き先（MainTabView.swift `tabRoot` 76–93行）:

- Record → `HomeView()`（→ record.md）
- Graph → `GraphTabView()`（→ graph.md）
- ＋ → `NavigationStack { InstantEntryView() }`（→ instant-input.md）
- Calendar → `CalendarTabView()`（→ calendar.md）
- Share → `ShareTabView()`

**起動直後に開くタブは Graph**（MainTabView.swift 45–46行の注釈:「通常起動は常にグラフ（所有者裁定 2026-08-20）」）。

## 2. タブバーの見た目（PatientTabBar, MainTabView.swift 96–183行）

- 並び: `[record] [graph] [空白(中央、幅flexible・高さ52)] [calendar] [share]`、上 padding 10 / 下 padding 6。
- 各タブボタン: アイコン `size 20, semibold`・高さ24 の上にラベル `font .xn(10, bold)`、縦間隔 4、上 padding 4。
  - 選択中: `XNColor.brand` / 非選択: `XNColor.secondaryText`。
- 背景: `XNColor.canvas.opacity(0.92)` + `.ultraThinMaterial`、下セーフエリアまで延長。
- 上端に 1pt の区切り線 `XNColor.line`。
- バー全体の accessibilityIdentifier: `tab.bar`（accessibilityValue に書体名 `Zen Kaku Gothic New` が入る）。

### 中央の＋ボタン（`addButton`, 154–182行）

- 白い `plus` アイコン `size 28, bold`、丸ボタン **58×58**、背景 `XNColor.brand`、`Circle` クリップ。
- 外周に `XNColor.canvas` の 4pt ストローク。
- 影: `XNColor.brand.opacity(0.38)`, radius 10, x 0, y 6。
- タブバー上に `offset(y: -8)` で浮かせる。選択中は `scaleEffect(1.04)`。
- ボタン下にラベル `＋`（`.xn(10, bold)`、選択中 brand / 非選択 secondaryText）。

## 3. 右上常設の設定ギア（TabSettingsLink + tabScreenChrome, 185–196 / 272–283行）

- 全タブの NavigationBar 右上（`topBarTrailing`）に `gearshape`（size 16, semibold）。
- accessibilityLabel `設定` / accessibilityIdentifier `tab.settings`。
- 行き先: `SettingsView()`（HomeView.swift 1568行〜。→ consent.md に同意関連、graph.md/instant-input.md に関係設定）。
- 各画面は `navigationTitle` にタブの英語見出し（`Record`/`Graph`/`＋`/`Calendar`/`Share`）を inline 表示。

## 4. Share タブの中身（参考。ShareTabView.swift 8–34行）

上から: 受診用に提供（`home-provide-entry`）→ 月次ビュー（`home.monthlySummary`）→ `PROM（HIT-6・MIDAS）`（`home-prom-entry`）→ 改善要望（`home-feedback-entry`）。

## 5. 書体と共通トークン（DesignTokens.swift）

- 書体: `Zen Kaku Gothic New`（XNFont.familyName, 25行）。同梱ファイル: Regular / Medium / Bold / Black（27–32行）。semibold は Bold に、black/heavy は Black に割り付け（74–85行）。
- NavigationBar: 背景 `XNColor.canvas`・影 `XNColor.line`・タイトル `primaryText`、large 34 bold / inline 17 bold（51–67行）。
- カード様式 `xnCard()`: padding 18、背景 `surface`、角丸 20 continuous、枠線 `line`、影 black 5% radius 10 y4（107–119行）。

## Fixture（Android 実装が参照する確定値）

### 色（出典: DesignTokens.swift 5–22行。hex は sRGB 値からの換算＝derived）

| トークン | 原文 Color(red:green:blue:) | hex (derived) |
|---|---|---|
| canvas | 0.933, 0.949, 0.949 | #EEF2F2 |
| surface | Color.white | #FFFFFF |
| surfaceSunken | 0.945, 0.957, 0.957 | #F1F4F4 |
| primaryText | 0.094, 0.188, 0.180 | #18302E |
| secondaryText | 0.318, 0.388, 0.373 | #51635F |
| brand | 0.110, 0.431, 0.412 | #1C6E69 |
| brandSoft | 0.878, 0.933, 0.925 | #E0EEEC |
| painMild | 0.443, 0.745, 0.588 | #71BE96 |
| painModerate | 0.890, 0.757, 0.447 | #E3C172 |
| painSevere | 0.867, 0.580, 0.400 | #DD9466 |
| painVerySevere | 0.796, 0.396, 0.369 | #CB655E |
| pressure | 0.431, 0.514, 0.769 | #6E83C4 |
| pressureSoft | 0.902, 0.918, 0.961 | #E6EAF5 |
| warning | 0.690, 0.341, 0.118 | #B0571E |
| warningSoft | 0.980, 0.922, 0.827 | #FAEBD3 |
| line | 0.878, 0.906, 0.898 | #E0E7E5 |

### タブバー寸法（出典: MainTabView.swift）

| 項目 | 値 | 行 |
|---|---|---|
| 中央空白の高さ | 52 | 106 |
| バー上/下 padding | 10 / 6 | 110–111 |
| タブアイコン size / 高さ枠 | 20 semibold / 24 | 139–140 |
| タブラベル | .xn(10, bold) | 142 |
| ＋ボタン径 | 58×58 | 163 |
| ＋アイコン | plus, 28 bold, 白 | 160–162 |
| ＋外周ストローク | canvas, 4pt | 168 |
| ＋影 | brand 38%, r10, y6 | 170 |
| ＋オフセット | y −8 | 114 |
| 選択時スケール | 1.04 | 171 |
| 上端区切り線 | line, 1pt | 122–126 |
| バー背景 | canvas 92% + ultraThinMaterial | 117–119 |
