Files
agent/src/app.ts

55 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-02-16 12:46:37 +08:00
// 运行时配置
import * as AntdIcons from '@ant-design/icons';
import React from 'react';
type MenuItem = {
icon?: string | React.ReactNode;
[key: string]: unknown;
};
type AntdIconComponent = React.ComponentType;
// 临时屏蔽 React findDOMNode 警告,通常来自第三方库
const originalWarn = console.error;
console.error = (...args: Parameters<typeof console.error>) => {
if (
typeof args[0] === 'string' &&
args[0].includes('findDOMNode is deprecated')
) {
return;
}
originalWarn(...args);
};
// 全局初始化数据配置,用于 Layout 用户信息和权限初始化
// 更多信息见文档https://umijs.org/docs/api/runtime-config#getinitialstate
export async function getInitialState(): Promise<{ name: string }> {
return { name: '@umijs/max' };
}
export const layout = () => {
return {
logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg',
menuDataRender: (menuData: MenuItem[]) => {
return menuData.map((item) => {
const iconName = typeof item.icon === 'string' ? item.icon : undefined;
const isIconName = iconName
? /(Outlined|Filled|TwoTone)$/.test(iconName)
: false;
const IconComponent = isIconName
? (AntdIcons[iconName as keyof typeof AntdIcons] as AntdIconComponent)
: undefined;
return {
...item,
icon: IconComponent ? React.createElement(IconComponent) : item.icon,
};
});
},
token: {
layout: {
bgLayout: 'none', // Remove gradients and glows
},
},
};
};