/* Maho Mockup — routes, tabs, seed data */

const TABS = [
  { id: "home", route: "/home", icon: "sparkles", label: "解析" },
  { id: "records", route: "/records", icon: "time", label: "紀錄" },
  { id: "library", route: "/library", icon: "book", label: "書庫" },
  { id: "me", route: "/me", icon: "person", label: "我的" },
];

const HUB_PAGES = [
  { group: "總覽", items: [
    { route: "/hub", title: "Prototype Hub", desc: "畫面目錄與 Design System" },
  ]},
  { group: "Tab 根頁", items: [
    { route: "/home", title: "Home 解析", desc: "圖片 / 文字 / 生成 / YouTube" },
    { route: "/records", title: "Records 紀錄", desc: "解析歷史列表" },
    { route: "/library", title: "Library 書庫", desc: "例句 / 單字 / 五十音入口" },
    { route: "/me", title: "Me 我的", desc: "帳號、點數、設定" },
  ]},
  { group: "解析流程", items: [
    { route: "/analysis/a1", title: "解析結果", desc: "句子列表 + 全文翻譯" },
    { route: "/analysis/a1/sentence/s1", title: "句子深度解析", desc: "逐詞 / 片語" },
    { route: "/analysis/a1/deep-dive/食べる", title: "延伸學習", desc: "詞形 / 漢字部件" },
    { route: "/analysis/c1", title: "模擬對話", desc: "左右聊天气泡" },
  ]},
  { group: "書庫", items: [
    { route: "/gojuuon", title: "五十音", desc: "假名表 + modal" },
    { route: "/sentence-books", title: "例句庫", desc: "列表 / 詳情" },
    { route: "/vocab-books", title: "單字本", desc: "列表 / 詳情" },
  ]},
  { group: "帳務與設定", items: [
    { route: "/settings", title: "設定", desc: "介面語言" },
    { route: "/topup", title: "加值", desc: "點數方案" },
    { route: "/usage", title: "使用紀錄", desc: "用量列表" },
  ]},
];

const SEED_ANALYSES = [
  {
    id: "a1",
    kind: "text",
    status: "completed",
    createdAt: "2026-07-30T10:20:00+08:00",
    originalText: "今日はカフェで友達と会って、おいしいケーキを食べました。午後は本屋さんに寄って、日本語の小説を一冊買いました。",
    translation: "今天在咖啡廳跟朋友碰面，吃了好吃的蛋糕。下午順道去書店，買了一本日語小說。",
    imageUrl: null,
    sentences: [
      {
        id: "s1",
        jp: "今日はカフェで友達と会って、おいしいケーキを食べました。",
        zh: "今天在咖啡廳跟朋友碰面，吃了好吃的蛋糕。",
        terms: [
          { term: "今日", reading: "きょう", meaning: "今天", pos: "名詞", jlpt: "N5" },
          { term: "カフェ", reading: "カフェ", meaning: "咖啡廳", pos: "名詞", jlpt: "N3" },
          { term: "友達", reading: "ともだち", meaning: "朋友", pos: "名詞", jlpt: "N5" },
          { term: "会う", reading: "あう", meaning: "見面", pos: "動詞", jlpt: "N5" },
          { term: "おいしい", reading: "おいしい", meaning: "好吃的", pos: "い形容詞", jlpt: "N5" },
          { term: "ケーキ", reading: "ケーキ", meaning: "蛋糕", pos: "名詞", jlpt: "N5" },
          { term: "食べる", reading: "たべる", meaning: "吃", pos: "動詞", jlpt: "N5" },
        ],
      },
      {
        id: "s2",
        jp: "午後は本屋さんに寄って、日本語の小説を一冊買いました。",
        zh: "下午順道去書店，買了一本日語小說。",
        terms: [
          { term: "午後", reading: "ごご", meaning: "下午", pos: "名詞", jlpt: "N5" },
          { term: "本屋", reading: "ほんや", meaning: "書店", pos: "名詞", jlpt: "N5" },
          { term: "寄る", reading: "よる", meaning: "順道去", pos: "動詞", jlpt: "N3" },
          { term: "小説", reading: "しょうせつ", meaning: "小說", pos: "名詞", jlpt: "N3" },
          { term: "一冊", reading: "いっさつ", meaning: "一冊／一本", pos: "名詞", jlpt: "N4" },
          { term: "買う", reading: "かう", meaning: "買", pos: "動詞", jlpt: "N5" },
        ],
      },
    ],
  },
  {
    id: "a2",
    kind: "image",
    status: "completed",
    createdAt: "2026-07-29T18:05:00+08:00",
    originalText: "この電車は渋谷駅に止まりますか。",
    translation: "這班電車會停在澀谷站嗎？",
    imageUrl: null,
    imageTone: "matcha",
    sentences: [
      {
        id: "s1",
        jp: "この電車は渋谷駅に止まりますか。",
        zh: "這班電車會停在澀谷站嗎？",
        terms: [
          { term: "電車", reading: "でんしゃ", meaning: "電車", pos: "名詞", jlpt: "N5" },
          { term: "渋谷", reading: "しぶや", meaning: "澀谷", pos: "固有名詞", jlpt: "—" },
          { term: "駅", reading: "えき", meaning: "車站", pos: "名詞", jlpt: "N5" },
          { term: "止まる", reading: "とまる", meaning: "停", pos: "動詞", jlpt: "N4" },
        ],
      },
    ],
  },
  {
    id: "c1",
    kind: "conversation",
    status: "completed",
    createdAt: "2026-07-28T21:40:00+08:00",
    originalText: "店員：いらっしゃいませ。ご注文はお決まりですか。\n客：アイスコーヒーを一つお願いします。",
    translation: "店員：歡迎光臨。您決定好要點什麼了嗎？\n客人：麻煩給我一杯冰咖啡。",
    imageUrl: null,
    turns: [
      { id: "t1", side: "left", speaker: "店員", jp: "いらっしゃいませ。ご注文はお決まりですか。", zh: "歡迎光臨。您決定好要點什麼了嗎？" },
      { id: "t2", side: "right", speaker: "客", jp: "アイスコーヒーを一つお願いします。", zh: "麻煩給我一杯冰咖啡。" },
      { id: "t3", side: "left", speaker: "店員", jp: "かしこまりました。こちらでお待ちください。", zh: "好的，請在這邊稍候。" },
    ],
  },
  {
    id: "a3",
    kind: "text",
    status: "processing",
    createdAt: "2026-07-31T07:10:00+08:00",
    originalText: "明日の会議の資料を準備しています。",
    translation: "",
    sentences: [],
  },
];

const SEED_USER = {
  displayName: "林小雨",
  email: "xiaoyu@example.com",
};

const SEED_POINTS = 1280;

const SEED_PRODUCTS = [
  { id: "p100", points: 100, price: "NT$30" },
  { id: "p500", points: 500, price: "NT$120" },
  { id: "p1200", points: 1200, price: "NT$270" },
  { id: "p3000", points: 3000, price: "NT$590" },
];

const SEED_USAGE = [
  { id: "u1", title: "文字解析", time: "今天 07:12", cost: -12 },
  { id: "u2", title: "模擬對話生成", time: "昨天 21:40", cost: -28 },
  { id: "u3", title: "圖片 OCR 解析", time: "昨天 18:05", cost: -35 },
  { id: "u4", title: "延伸學習", time: "7/29 14:20", cost: -8 },
];

const SEED_SENTENCE_BOOKS = [
  { id: "sb1", name: "日常會話", count: 12 },
  { id: "sb2", name: "旅行用語", count: 8 },
];

const SEED_SENTENCES = {
  sb1: [
    { id: "e1", jp: "ちょっと待ってください。", zh: "請稍等一下。" },
    { id: "e2", jp: "これはいくらですか。", zh: "這個多少錢？" },
    { id: "e3", jp: "駅はどこですか。", zh: "車站在哪裡？" },
  ],
  sb2: [
    { id: "e4", jp: "チェックインをお願いします。", zh: "我想辦理入住。" },
    { id: "e5", jp: "空港までどのくらいかかりますか。", zh: "到機場大概要多久？" },
  ],
};

const SEED_VOCAB_BOOKS = [
  { id: "vb1", name: "N5 常用動詞", count: 24 },
  { id: "vb2", name: "咖啡廳單字", count: 9 },
];

const SEED_VOCAB = {
  vb1: [
    { term: "食べる", reading: "たべる", meaning: "吃", jlpt: "N5" },
    { term: "行く", reading: "いく", meaning: "去", jlpt: "N5" },
    { term: "見る", reading: "みる", meaning: "看", jlpt: "N5" },
  ],
  vb2: [
    { term: "珈琲", reading: "コーヒー", meaning: "咖啡", jlpt: "N5" },
    { term: "砂糖", reading: "さとう", meaning: "糖", jlpt: "N5" },
  ],
};

const HIRAGANA_SEION = [
  ["あ", "い", "う", "え", "お"],
  ["か", "き", "く", "け", "こ"],
  ["さ", "し", "す", "せ", "そ"],
  ["た", "ち", "つ", "て", "と"],
  ["な", "に", "ぬ", "ね", "の"],
  ["は", "ひ", "ふ", "へ", "ほ"],
  ["ま", "み", "む", "め", "も"],
  ["や", "", "ゆ", "", "よ"],
  ["ら", "り", "る", "れ", "ろ"],
  ["わ", "", "", "", "を"],
  ["ん", "", "", "", ""],
];

const ROMAJI = {
  あ: "a", い: "i", う: "u", え: "e", お: "o",
  か: "ka", き: "ki", く: "ku", け: "ke", こ: "ko",
  さ: "sa", し: "shi", す: "su", せ: "se", そ: "so",
  た: "ta", ち: "chi", つ: "tsu", て: "te", と: "to",
  な: "na", に: "ni", ぬ: "nu", ね: "ne", の: "no",
  は: "ha", ひ: "hi", ふ: "fu", へ: "he", ほ: "ho",
  ま: "ma", み: "mi", む: "mu", め: "me", も: "mo",
  や: "ya", ゆ: "yu", よ: "yo",
  ら: "ra", り: "ri", る: "ru", れ: "re", ろ: "ro",
  わ: "wa", を: "o", ん: "n",
};

const TOPIC_PRESETS = [
  { name: "生活情境", prompt: "一段在便利商店買東西、結帳的日常生活對話" },
  { name: "交通搭乘", prompt: "一段在車站問路、購票與搭乘電車的對話" },
  { name: "辦公室情境", prompt: "一段在辦公室同事之間交辦與討論工作的對話" },
];

const MOCK_PHOTOS = [
  "linear-gradient(135deg,#c9d4b5,#8a976d)",
  "linear-gradient(135deg,#e8d5c4,#c49a78)",
  "linear-gradient(135deg,#d5e3ec,#7a9aaf)",
  "linear-gradient(135deg,#f0e0c8,#d2a679)",
  "linear-gradient(135deg,#e4ecd8,#a3b18a)",
];

function formatRelativeDate(iso) {
  const d = new Date(iso);
  const now = new Date("2026-07-31T08:00:00+08:00");
  const diff = (now - d) / 1000;
  if (diff < 3600) return "剛剛";
  if (diff < 86400) return "今天";
  if (diff < 172800) return "昨天";
  return `${d.getMonth() + 1}/${d.getDate()}`;
}

function findAnalysis(id) {
  return SEED_ANALYSES.find((a) => a.id === id) || null;
}

Object.assign(window, {
  TABS,
  HUB_PAGES,
  SEED_ANALYSES,
  SEED_USER,
  SEED_POINTS,
  SEED_PRODUCTS,
  SEED_USAGE,
  SEED_SENTENCE_BOOKS,
  SEED_SENTENCES,
  SEED_VOCAB_BOOKS,
  SEED_VOCAB,
  HIRAGANA_SEION,
  ROMAJI,
  TOPIC_PRESETS,
  MOCK_PHOTOS,
  formatRelativeDate,
  findAnalysis,
});
