/**
 * 60s API 聚合接口配置
 * 基于 https://docs.60s-api.viki.moe/ 文档整理
 * 所有 endpoint 均为 /v2/ 前缀的相对路径，配合 apiBaseUrl 使用
 */

// 可选的 API 数据源列表，前端可切换
export const API_SOURCES = [
  { id: 'self', label: '萌芽节点', baseUrl: 'https://60s.api.shumengya.top' },
  { id: 'official', label: '官方节点', baseUrl: 'https://60s.viki.moe' },
];

// 默认 API 数据源
export const DEFAULT_SOURCE_ID = 'self';

/**
 * 渲染类型枚举
 * list    — 有序列表（热搜榜单、新闻条目等）
 * text    — 单条文本（段子、一言、KFC文案等）
 * image   — 图片展示（壁纸、摸鱼日历等）
 * info    — 键值对信息（天气、汇率、农历等）
 * table   — 表格数据（油价、金价等）
 * tool    — 需要用户输入的工具（翻译、百科等）
 * embed   — 内嵌 iframe（工具箱项目）
 */

// ========== 周期资讯 ==========
const PERIODIC_NEWS = [
  { id: '60s', title: '每天60s读懂世界', icon: '🌍', endpoint: '/v2/60s', type: 'list', desc: '每日新闻精选' },
  { id: 'ai-news', title: 'AI资讯快报', icon: '🤖', endpoint: '/v2/ai-news', type: 'list', desc: '每日AI前沿动态' },
  { id: 'bing', title: '必应每日壁纸', icon: '🖼️', endpoint: '/v2/bing', type: 'image', desc: '每日精选壁纸' },
  { id: 'exchange-rate', title: '当日货币汇率', icon: '💱', endpoint: '/v2/exchange-rate', type: 'info', desc: '实时国际汇率' },
  { id: 'today-in-history', title: '历史上的今天', icon: '📅', endpoint: '/v2/today-in-history', type: 'list', desc: '历史事件回顾' },
  { id: 'epic', title: 'Epic免费游戏', icon: '🎮', endpoint: '/v2/epic', type: 'list', desc: '本周免费领取' },
  { id: 'lunar', title: '农历信息', icon: '🌙', endpoint: '/v2/lunar', type: 'info', desc: '今日农历详情' },
  { id: 'moyu', title: '摸鱼日历', icon: '🐟', endpoint: '/v2/moyu', type: 'image', desc: '假期倒计时' },
];

// ========== 热门榜单 ==========
const HOT_RANKINGS = [
  { id: 'bili', title: '哔哩哔哩热搜', icon: '📺', endpoint: '/v2/bili', type: 'list' },
  { id: 'douyin', title: '抖音热搜', icon: '🎵', endpoint: '/v2/douyin', type: 'list' },
  { id: 'rednote', title: '小红书热搜', icon: '🍠', endpoint: '/v2/rednote', type: 'list' },
  { id: 'weibo', title: '微博热搜', icon: '📱', endpoint: '/v2/weibo', type: 'list' },
  { id: 'zhihu', title: '知乎热门', icon: '💡', endpoint: '/v2/zhihu', type: 'list' },
  { id: 'toutiao', title: '今日头条', icon: '📰', endpoint: '/v2/toutiao', type: 'list' },
  { id: 'baidu-hot', title: '百度热搜', icon: '🔍', endpoint: '/v2/baidu/hot', type: 'list' },
  { id: 'baidu-teleplay', title: '百度电视剧榜', icon: '📺', endpoint: '/v2/baidu/teleplay', type: 'list' },
  { id: 'baidu-tieba', title: '百度贴吧话题', icon: '💬', endpoint: '/v2/baidu/tieba', type: 'list' },
  { id: 'dongchedi', title: '懂车帝热搜', icon: '🚗', endpoint: '/v2/dongchedi', type: 'list' },
  { id: 'quark', title: '夸克热搜', icon: '🔎', endpoint: '/v2/quark', type: 'list' },
  { id: 'hacker-news-top', title: 'HackerNews 热门', icon: '💻', endpoint: '/v2/hacker-news/top', type: 'list' },
  { id: 'hacker-news-new', title: 'HackerNews 最新', icon: '💻', endpoint: '/v2/hacker-news/new', type: 'list' },
  { id: 'ncm-rank', title: '网易云音乐榜单', icon: '🎶', endpoint: '/v2/ncm-rank/list', type: 'list' },
  { id: 'maoyan-movie', title: '猫眼实时票房', icon: '🎬', endpoint: '/v2/maoyan/realtime/movie', type: 'list' },
  { id: 'maoyan-tv', title: '猫眼电视热度', icon: '📺', endpoint: '/v2/maoyan/realtime/tv', type: 'list' },
  { id: 'maoyan-web', title: '猫眼网剧热度', icon: '💻', endpoint: '/v2/maoyan/realtime/web', type: 'list' },
  { id: 'douban-movie', title: '豆瓣一周口碑电影', icon: '🎬', endpoint: '/v2/douban/weekly/movie', type: 'list' },
  { id: 'douban-tv-cn', title: '豆瓣国产剧集', icon: '📺', endpoint: '/v2/douban/weekly/tv_chinese', type: 'list' },
  { id: 'douban-tv-global', title: '豆瓣海外剧集', icon: '🌏', endpoint: '/v2/douban/weekly/tv_global', type: 'list' },
];

// ========== 实用功能 ==========
const PRACTICAL_TOOLS = [
  { id: 'weather', title: '实时天气', icon: '🌤️', endpoint: '/v2/weather/realtime', type: 'tool',
    params: [{ key: 'city', label: '城市', placeholder: '例如：北京' }] },
  { id: 'weather-forecast', title: '天气预报', icon: '⛅', endpoint: '/v2/weather/forecast', type: 'tool',
    params: [{ key: 'city', label: '城市', placeholder: '例如：上海' }] },
  { id: 'fanyi', title: '在线翻译', icon: '🌍', endpoint: '/v2/fanyi', type: 'tool',
    params: [{ key: 'text', label: '翻译内容', placeholder: '输入需要翻译的文本' }, { key: 'to', label: '目标语言', placeholder: '如 en、ja、ko，留空自动识别' }] },
  { id: 'baike', title: '百度百科', icon: '📚', endpoint: '/v2/baike', type: 'tool',
    params: [{ key: 'q', label: '搜索词', placeholder: '输入要查询的词条' }] },
  { id: 'ip', title: 'IP查询', icon: '🌐', endpoint: '/v2/ip', type: 'info', desc: '查询当前公网IP' },
  { id: 'qrcode', title: '二维码生成', icon: '📱', endpoint: '/v2/qrcode', type: 'tool',
    params: [{ key: 'text', label: '内容', placeholder: '输入链接或文本' }], responseType: 'image' },
  { id: 'hash', title: '哈希工具', icon: '🗜️', endpoint: '/v2/hash', type: 'tool',
    params: [{ key: 'text', label: '内容', placeholder: '输入需要哈希的文本' }] },
  { id: 'password', title: '随机密码生成', icon: '🔒', endpoint: '/v2/password', type: 'info', desc: '生成安全随机密码' },
  { id: 'password-check', title: '密码强度检测', icon: '🔐', endpoint: '/v2/password/check', type: 'tool',
    params: [{ key: 'text', label: '密码', placeholder: '输入需要检测的密码' }] },
  { id: 'color-random', title: '随机颜色', icon: '🌈', endpoint: '/v2/color/random', type: 'info', desc: '随机生成一种颜色' },
  { id: 'color-palette', title: '配色方案', icon: '🎨', endpoint: '/v2/color/palette', type: 'tool',
    params: [{ key: 'color', label: '基础色', placeholder: '如 #4ade80' }] },
  { id: 'health', title: '身体健康分析', icon: '🏥', endpoint: '/v2/health', type: 'tool',
    params: [{ key: 'height', label: '身高(cm)', placeholder: '170' }, { key: 'weight', label: '体重(kg)', placeholder: '65' }] },
  { id: 'fuel-price', title: '今日油价', icon: '⛽', endpoint: '/v2/fuel-price', type: 'info', desc: '全国油价实时查询' },
  { id: 'gold-price', title: '今日金价', icon: '🥇', endpoint: '/v2/gold-price', type: 'info', desc: '实时黄金价格' },
  { id: 'lyric', title: '歌词搜索', icon: '🎵', endpoint: '/v2/lyric', type: 'tool',
    params: [{ key: 'keyword', label: '歌曲名', placeholder: '输入歌曲名称' }] },
  { id: 'whois', title: 'Whois查询', icon: '🔍', endpoint: '/v2/whois', type: 'tool',
    params: [{ key: 'domain', label: '域名', placeholder: '如 example.com' }] },
  { id: 'chemical', title: '化学元素查询', icon: '⚗️', endpoint: '/v2/chemical', type: 'tool',
    params: [{ key: 'q', label: '元素', placeholder: '如 Fe 或 铁' }] },
];

// ========== 消遣娱乐 ==========
const ENTERTAINMENT = [
  { id: 'duanzi', title: '随机段子', icon: '😂', endpoint: '/v2/duanzi', type: 'text' },
  { id: 'hitokoto', title: '随机一言', icon: '💭', endpoint: '/v2/hitokoto', type: 'text' },
  { id: 'kfc', title: '疯狂星期四', icon: '🍗', endpoint: '/v2/kfc', type: 'text' },
  { id: 'fabing', title: '发病文学', icon: '📖', endpoint: '/v2/fabing', type: 'tool',
    params: [{ key: 'name', label: '对象名', placeholder: '输入名字' }] },
  { id: 'luck', title: '今日运势', icon: '⭐', endpoint: '/v2/luck', type: 'text' },
  { id: 'answer', title: '答案之书', icon: '📘', endpoint: '/v2/answer', type: 'text' },
  { id: 'changya', title: '随机唱歌', icon: '🎤', endpoint: '/v2/changya', type: 'text', desc: '随机一段哼唱' },
  { id: 'dad-joke', title: '英文冷笑话', icon: '😄', endpoint: '/v2/dad-joke', type: 'text' },
  { id: 'awesome-js', title: 'JS趣味题', icon: '💻', endpoint: '/v2/awesome-js', type: 'text' },
];

// 所有分类（主题色统一为清新绿系，与全站渐变一致；工具箱已独立页面）
export const API_CATEGORIES = [
  { id: 'periodic', title: '周期资讯', icon: '📰', color: '#15803d', items: PERIODIC_NEWS },
  { id: 'rankings', title: '热门榜单', icon: '🔥', color: '#166534', items: HOT_RANKINGS },
  { id: 'tools', title: '实用功能', icon: '🛠️', color: '#22c55e', items: PRACTICAL_TOOLS },
  { id: 'fun', title: '消遣娱乐', icon: '🎉', color: '#059669', items: ENTERTAINMENT },
];

// ========== 工具箱（public/toolbox 下按目录分类）==========
// 注意：public/toolbox/个人主页模板 为临时放置资源，不加入下列列表，也不在工具箱展示。
// offlineOk：安装 PWA 或在线缓存后，页面与脚本均可本地加载、无需外网即可使用（播放网络流等仍要联网）
const TOOLBOX_IMAGE = [
  { id: 'tb-img-ico', title: 'PNG 转 ICO', icon: '📦', link: '/toolbox/图片处理/图片png转ico格式/index.html', desc: '图标格式转换', offlineOk: true },
  { id: 'tb-img-pixel', title: '图片像素化', icon: '🧩', link: '/toolbox/图片处理/图片像素化处理/index.html', desc: '马赛克风格处理', offlineOk: true },
  { id: 'tb-img-bw', title: '图片黑白', icon: '⬛', link: '/toolbox/图片处理/图片黑白处理/index.html', desc: '灰度转换', offlineOk: true },
  { id: 'tb-img-round', title: '图片圆角', icon: '🔲', link: '/toolbox/图片处理/图片圆角处理/index.html', desc: '圆角裁剪', offlineOk: true },
  { id: 'tb-img-b64', title: '图片转 Base64', icon: '🔀', link: '/toolbox/图片处理/图片转Base64编码/index.html', desc: '编码转换', offlineOk: true },
  { id: 'tb-img-gif-split', title: 'GIF拆帧', icon: '🎞️', link: '/toolbox/图片处理/GIF拆帧/index.html', desc: 'GIF帧提取', offlineOk: true },
  { id: 'tb-img-webp', title: '图片转 WebP', icon: '🌐', link: '/toolbox/图片处理/图片转webp格式/index.html', desc: 'WebP格式转换', offlineOk: true },
];

const TOOLBOX_UTIL = [
  { id: 'tb-whiteboard', title: '在线白板', icon: '🀆', link: '/toolbox/实用工具/白板/index.html', desc: '自由绘制', offlineOk: true },
  { id: 'tb-notepad', title: '记事本', icon: '🗒️', link: '/toolbox/实用工具/记事本/index.html', desc: '轻量编辑', offlineOk: true },
  { id: 'tb-video', title: '视频播放器', icon: '▶️', link: '/toolbox/实用工具/视频播放器/index.html', desc: '本地视频播放（网络流需联网）', offlineOk: true },
  { id: 'tb-json', title: 'JSON 编辑器', icon: '📑', link: '/toolbox/实用工具/Json编辑器/index.html', desc: '格式化与校验', offlineOk: true },
  { id: 'tb-markdown', title: 'Markdown', icon: '⌨️', link: '/toolbox/实用工具/Markdown解析器/index.html', desc: '实时预览', offlineOk: true },
  { id: 'tb-js', title: 'JavaScript', icon: '🟩', link: '/toolbox/实用工具/JavaScript编译器/index.html', desc: '本地运行脚本', offlineOk: true },
  { id: 'tb-random-num', title: '随机数', icon: '🎲', link: '/toolbox/实用工具/随机数生成器/index.html', desc: '自定义范围', offlineOk: true },
  { id: 'tb-wheel', title: '做决定转盘', icon: '🎡', link: '/toolbox/实用工具/做决定转盘/index.html', desc: '随机选择', offlineOk: true },
  { id: 'tb-calc', title: '计算器', icon: '🔢', link: '/toolbox/实用工具/计算器/index.html', desc: '基础运算', offlineOk: true },
];

const TOOLBOX_WEB_TOY = [
  { id: 'tb-ai-chat', title: 'AI 聊天', icon: '🤖', link: '/toolbox/网页小玩具/AI聊天/index.html', desc: '需调用云端大模型，无法离线使用', offlineOk: false },
  { id: 'tb-clock', title: '数字时钟', icon: '🕐', link: '/toolbox/网页小玩具/数字时钟/index.html', desc: '全屏时钟', offlineOk: true },
  { id: 'tb-countdown', title: '人生倒计时', icon: '⏲️', link: '/toolbox/网页小玩具/人生倒计时/index.html', desc: '可视化倒计时', offlineOk: true },
  { id: 'tb-emoji', title: '随机 Emoji', icon: '😊', link: '/toolbox/网页小玩具/随机Emoji表情/index.html', desc: '随机表情', offlineOk: true },
  { id: 'tb-code-rain', title: '代码雨', icon: '💻', link: '/toolbox/网页小玩具/代码雨/index.html', desc: '炫酷代码雨效果', offlineOk: true },
  { id: 'tb-wall-clock', title: '网页挂钟', icon: '🕰️', link: '/toolbox/网页小玩具/网页挂钟/index.html', desc: '在线挂钟', offlineOk: true },
  { id: 'tb-christmas-tree', title: '粒子圣诞树', icon: '🎄', link: '/toolbox/网页小玩具/粒子圣诞树/粒子圣诞树.html', desc: '炫酷圣诞树特效', offlineOk: true },
];

const TOOLBOX_LEARNING = [
  { id: 'tb-study-html-div', title: 'div 标签指南', icon: '📐', link: '/toolbox/学习工具/HTML的div标签指南/index.html', desc: 'HTML 入门', offlineOk: true },
  { id: 'tb-study-html-fmt', title: 'HTML 格式大全', icon: '📋', link: '/toolbox/学习工具/HTML格式大全/index.html', desc: '标签速查', offlineOk: true },
  { id: 'tb-study-doc-tpl', title: '网页模板', icon: '📄', link: '/toolbox/学习工具/文档类网页模板/index.html', desc: '文档类模板', offlineOk: true },
  { id: 'tb-study-en', title: '计算机英语词汇', icon: '📖', link: '/toolbox/学习工具/计算机英语词汇学习/index.html', desc: '词汇学习', offlineOk: true },
  { id: 'tb-study-cpc-app', title: '入党申请书', icon: '📝', link: '/toolbox/学习工具/入党申请书/index.html', desc: '范文与模板', offlineOk: true },
];

/** 工具箱分类（不含个人主页模板临时目录） */
export const TOOLBOX_CATEGORIES = [
  { id: 'image', title: '图片处理', icon: '🖼️', color: '#4ade80', items: TOOLBOX_IMAGE },
  { id: 'util', title: '实用工具', icon: '🛠️', color: '#22c55e', items: TOOLBOX_UTIL },
  { id: 'webtoy', title: '网页小玩具', icon: '🎪', color: '#34d399', items: TOOLBOX_WEB_TOY },
  { id: 'study', title: '学习工具', icon: '📚', color: '#059669', items: TOOLBOX_LEARNING },
];

/** 扁平列表（统计、兼容旧引用） */
export const TOOLBOX_ITEMS = TOOLBOX_CATEGORIES.flatMap((c) => c.items);

/**
 * 各 API 项 id → public 目录下静态页路径（与文件名一致）
 * 供 /60sapi/:itemId 路由嵌入展示
 */
export const API_ITEM_STATIC_HTML = {
  // 周期资讯
  '60s': '/60sapi/周期资讯/每天60s读懂世界.html',
  'ai-news': '/60sapi/周期资讯/AI资讯快报.html',
  bing: '/60sapi/周期资讯/必应每日壁纸.html',
  'exchange-rate': '/60sapi/周期资讯/当日货币汇率.html',
  'today-in-history': '/60sapi/周期资讯/历史上的今天.html',
  epic: '/60sapi/周期资讯/Epic免费游戏.html',
  lunar: '/60sapi/周期资讯/农历信息.html',
  moyu: '/60sapi/周期资讯/摸鱼日历.html',
  // 热门榜单
  bili: '/60sapi/热门榜单/哔哩哔哩热搜.html',
  douyin: '/60sapi/热门榜单/抖音热搜.html',
  rednote: '/60sapi/热门榜单/小红书热搜.html',
  weibo: '/60sapi/热门榜单/微博热搜.html',
  zhihu: '/60sapi/热门榜单/知乎热门.html',
  toutiao: '/60sapi/热门榜单/今日头条.html',
  'baidu-hot': '/60sapi/热门榜单/百度热搜.html',
  'baidu-teleplay': '/60sapi/热门榜单/百度电视剧榜.html',
  'baidu-tieba': '/60sapi/热门榜单/百度贴吧话题.html',
  dongchedi: '/60sapi/热门榜单/懂车帝热搜.html',
  quark: '/60sapi/热门榜单/夸克热搜.html',
  'hacker-news-top': '/60sapi/热门榜单/HackerNews热门.html',
  'hacker-news-new': '/60sapi/热门榜单/HackerNews最新.html',
  'ncm-rank': '/60sapi/热门榜单/网易云音乐榜单.html',
  'maoyan-movie': '/60sapi/热门榜单/猫眼实时票房.html',
  'maoyan-tv': '/60sapi/热门榜单/猫眼电视热度.html',
  'maoyan-web': '/60sapi/热门榜单/猫眼网剧热度.html',
  'douban-movie': '/60sapi/热门榜单/豆瓣一周口碑电影.html',
  'douban-tv-cn': '/60sapi/热门榜单/豆瓣国产剧集.html',
  'douban-tv-global': '/60sapi/热门榜单/豆瓣海外剧集.html',
  // 实用功能
  weather: '/60sapi/实用功能/实时天气.html',
  'weather-forecast': '/60sapi/实用功能/天气预报.html',
  fanyi: '/60sapi/实用功能/在线翻译.html',
  baike: '/60sapi/实用功能/百度百科.html',
  ip: '/60sapi/实用功能/IP查询.html',
  qrcode: '/60sapi/实用功能/二维码生成.html',
  hash: '/60sapi/实用功能/哈希工具.html',
  password: '/60sapi/实用功能/随机密码生成.html',
  'password-check': '/60sapi/实用功能/密码强度检测.html',
  'color-random': '/60sapi/实用功能/随机颜色.html',
  'color-palette': '/60sapi/实用功能/配色方案.html',
  health: '/60sapi/实用功能/身体健康分析.html',
  'fuel-price': '/60sapi/实用功能/今日油价.html',
  'gold-price': '/60sapi/实用功能/今日金价.html',
  lyric: '/60sapi/实用功能/歌词搜索.html',
  whois: '/60sapi/实用功能/Whois查询.html',
  chemical: '/60sapi/实用功能/化学元素查询.html',
  // 消遣娱乐（目录名为「娱乐消遣」）
  duanzi: '/60sapi/娱乐消遣/随机段子.html',
  hitokoto: '/60sapi/娱乐消遣/随机一言.html',
  kfc: '/60sapi/娱乐消遣/疯狂星期四.html',
  fabing: '/60sapi/娱乐消遣/发病文学.html',
  luck: '/60sapi/娱乐消遣/今日运势.html',
  answer: '/60sapi/娱乐消遣/答案之书.html',
  changya: '/60sapi/娱乐消遣/随机唱歌.html',
  'dad-joke': '/60sapi/娱乐消遣/英文冷笑话.html',
  'awesome-js': '/60sapi/娱乐消遣/JS趣味题.html',
};

/** 根据 itemId 查找分类与条目（用于标题、主题色） */
export function findApiItemMeta(itemId) {
  for (const cat of API_CATEGORIES) {
    const item = cat.items.find((i) => i.id === itemId);
    if (item) return { category: cat, item };
  }
  return null;
}

const Api60sConfig = {
  API_SOURCES,
  DEFAULT_SOURCE_ID,
  API_CATEGORIES,
  TOOLBOX_CATEGORIES,
  TOOLBOX_ITEMS,
  API_ITEM_STATIC_HTML,
};
export default Api60sConfig;
