import { TypingAnimation } from '@/components/TypingAnimation';
import pkg from '~/package.json';
import HeaderDescription from './modules/header-description';
import type { CardInfo, PkgJson, PkgVersionInfo } from './modules/shared';
import { transformVersionData } from './modules/shared';
const latestBuildTime = BUILD_TIME;
// 解构 package.json 数据
const { dependencies, devDependencies, name, version } = pkg;
// 格式化 package.json 数据
const pkgJson: PkgJson = {
dependencies: Object.entries(dependencies).map(transformVersionData),
devDependencies: Object.entries(devDependencies).map(transformVersionData),
name,
version
};
// 抽离渲染组件
const TagItem = ({ nameOrHref }: PkgVersionInfo) => {nameOrHref};
const Link = ({ label, nameOrHref }: PkgVersionInfo) => (
{label}
);
// 获取卡片信息的自定义 Hook
function useGetCardInfo(): CardInfo[] {
const { t } = useTranslation();
// 项目基本信息
const packageInfo: PkgVersionInfo[] = [
{
label: t('page.about.projectInfo.version'),
nameOrHref: pkgJson.version,
render: TagItem
},
{
label: t('page.about.projectInfo.latestBuildTime'),
nameOrHref: latestBuildTime,
render: TagItem
},
{
label: t('page.about.projectInfo.githubLink'),
nameOrHref: pkg.homepage,
render: Link
},
{
label: t('page.about.projectInfo.previewLink'),
nameOrHref: pkg.website,
render: Link
}
];
// 卡片信息配置
return [
{
content: packageInfo,
title: t('page.about.projectInfo.title')
},
{
content: pkgJson.dependencies,
title: t('page.about.prdDep')
},
{
content: pkgJson.devDependencies, // 修复之前使用错误的 dependencies
title: t('page.about.devDep')
}
];
}
// 主组件
const About = () => {
const { t } = useTranslation();
const cardInfo = useGetCardInfo();
return (
{t('page.about.introduction')}
{cardInfo.map(HeaderDescription)}
);
};
export default About;