18 lines
2.0 KiB
TypeScript
18 lines
2.0 KiB
TypeScript
type ReactLike = { createElement: (...args: any[]) => any };
|
|
|
|
export type SCUMPageContext = { pageKey?: string; pageTitle?: string; serverInstanceId?: string; permissions: string[]; availability: { available: boolean; reason?: string }; featureAvailability?: Array<{ key: string; available: boolean; reason?: string }> };
|
|
|
|
export function renderSCUMFeaturePage(react: ReactLike, input: SCUMPageContext) {
|
|
const pageKey = normalizePageKey(input.pageKey);
|
|
const title = input.pageTitle ?? surfaceTitle(pageKey);
|
|
const reason = input.availability.reason ?? "等待当前服务器完成兼容性验证。";
|
|
return react.createElement("section", { className: "console-panel", "aria-label": title },
|
|
react.createElement("div", { className: "panel-header" }, react.createElement("div", null, react.createElement("h2", null, title), react.createElement("p", { className: "provider-id" }, surfaceSummary(pageKey))), react.createElement("span", { className: "page-status" }, input.availability.available ? "本地数据接口准备中" : reason)),
|
|
react.createElement("p", { className: "page-status" }, "当前页面不会读取遗留快照或派发远程查询;兼容的本地数据接口启用后将显示已验证记录。")
|
|
);
|
|
}
|
|
|
|
function normalizePageKey(pageKey?: string): string { return pageKey === "squads" || pageKey === "live-map" || pageKey === "gifts" || pageKey === "players" ? pageKey : "players"; }
|
|
function surfaceTitle(pageKey: string): string { return pageKey === "squads" ? "队伍管理" : pageKey === "live-map" ? "实时地图" : pageKey === "gifts" ? "礼包管理" : "用户管理"; }
|
|
function surfaceSummary(pageKey: string): string { return pageKey === "live-map" ? "地图仅显示经当前服务器验证的坐标。" : pageKey === "gifts" ? "礼包、资格和发放历史仅来自本地业务记录。" : pageKey === "squads" ? "队伍、成员和旗帜仅显示经当前服务器验证的事实。" : "玩家记录将由已验证登录事件和同步结果建立。"; }
|