138 lines
3.5 KiB
TypeScript
138 lines
3.5 KiB
TypeScript
/**
|
|
* 开发调试:可切换的隐藏功能注册表
|
|
* 默认值与 nav.config / home.config 中的 hidden 开关保持一致
|
|
*/
|
|
import { HOME_MEDIA_PRESS_ENABLED, HOME_RIGHT_FEATURE_CARDS_ENABLED } from "./home.config";
|
|
import type { NavLink } from "./nav.config";
|
|
|
|
export interface DebugFeature {
|
|
id: string;
|
|
label: string;
|
|
description: string;
|
|
category: string;
|
|
defaultVisible: boolean;
|
|
navLabelKey?: NavLink["labelKey"];
|
|
}
|
|
|
|
export const DEBUG_FEATURES: DebugFeature[] = [
|
|
{
|
|
id: "nav.cities",
|
|
label: "城市",
|
|
description: "顶部导航 🏙️ → /",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "cities",
|
|
},
|
|
{
|
|
id: "nav.guide",
|
|
label: "游民指南",
|
|
description: "顶部导航 🧭 → /digital",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "guide",
|
|
},
|
|
{
|
|
id: "nav.dashboard",
|
|
label: "下一站",
|
|
description: "顶部导航 📍 → /dashboard",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "dashboard",
|
|
},
|
|
{
|
|
id: "nav.travel",
|
|
label: "聚会",
|
|
description: "顶部导航 ✈️ → /meetups",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "travel",
|
|
},
|
|
{
|
|
id: "nav.community",
|
|
label: "社区",
|
|
description: "顶部导航 💬 → /dating",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "community",
|
|
},
|
|
{
|
|
id: "nav.tools",
|
|
label: "工具箱",
|
|
description: "顶部导航 📊 → /tools",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "tools",
|
|
},
|
|
{
|
|
id: "nav.ai",
|
|
label: "AI",
|
|
description: "顶部导航 🤖 → /ai",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "ai",
|
|
},
|
|
{
|
|
id: "nav.gigs",
|
|
label: "赏金",
|
|
description: "顶部导航 💰 → /gigs",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "gigs",
|
|
},
|
|
{
|
|
id: "nav.pricing",
|
|
label: "会员",
|
|
description: "顶部导航 👑 → /pricing",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "pricing",
|
|
},
|
|
{
|
|
id: "nav.explore",
|
|
label: "探索",
|
|
description: "顶部导航 🎒 → /#community",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
navLabelKey: "explore",
|
|
},
|
|
{
|
|
id: "nav.menu",
|
|
label: "更多",
|
|
description: "顶部导航网格按钮 · 点击头像亦可打开",
|
|
category: "顶部导航",
|
|
defaultVisible: false,
|
|
},
|
|
{
|
|
id: "home.rightFeatureCards",
|
|
label: "电子书 & 访谈视频",
|
|
description: "首页右侧网格顶部的两张内容卡片",
|
|
category: "首页",
|
|
defaultVisible: HOME_RIGHT_FEATURE_CARDS_ENABLED,
|
|
},
|
|
{
|
|
id: "home.mediaPress",
|
|
label: "媒体报道",
|
|
description: "首页 Hero 区底部的媒体名称列表",
|
|
category: "首页",
|
|
defaultVisible: HOME_MEDIA_PRESS_ENABLED,
|
|
},
|
|
];
|
|
|
|
export function getDebugFeatureById(id: string): DebugFeature | undefined {
|
|
return DEBUG_FEATURES.find((feature) => feature.id === id);
|
|
}
|
|
|
|
export function getDebugFeatureDefaultVisible(id: string): boolean {
|
|
return getDebugFeatureById(id)?.defaultVisible ?? false;
|
|
}
|
|
|
|
export function getNavLabelDebugFeatureId(
|
|
labelKey: NavLink["labelKey"]
|
|
): string | undefined {
|
|
return DEBUG_FEATURES.find((feature) => feature.navLabelKey === labelKey)?.id;
|
|
}
|
|
|
|
export function getDebugFeatureCategories(): string[] {
|
|
return [...new Set(DEBUG_FEATURES.map((feature) => feature.category))];
|
|
}
|