import { EditOutlined, GithubFilled } from '@ant-design/icons'; import { Divider, Space, Typography } from 'antd'; import { useResponsive } from 'antd-style'; import { FC, memo, ReactNode } from 'react'; import { Flexbox } from 'react-layout-kit'; import Code from '../CodeSnippet'; import { ApiHeaderProps } from 'dumi-theme-antd-style/src'; import { useStyles } from './style'; /** * @title API 标题属性 * @extends ApiHeaderProps */ export interface ApiTitleProps extends ApiHeaderProps { /** * @title 标题 */ title: string; /** * @title 服务列表 * @description 可选,若存在则展示 API 服务列表 */ serviceList?: ServiceItem[]; } /** * @title 服务项 */ export interface ServiceItem { /** * @title 服务标签 */ label: string; /** * @title 服务图标 */ icon: ReactNode; /** * @title 服务描述 */ children: string; /** * @title 服务链接 */ url: string; } export const ApiHeader: FC = memo( ({ title, componentName, description, defaultImport, pkg, sourceUrl, docUrl, serviceList = [], }) => { const { styles } = useStyles(); const { mobile } = useResponsive(); const items = [ sourceUrl && { icon: , children: '查看源码', url: sourceUrl, }, docUrl && { icon: , children: '编辑文档', url: docUrl, }, ].filter((i) => i) as ServiceItem[]; const importStr = defaultImport ? `import ${componentName} from '${pkg}';` : `import { ${componentName} } from '${pkg}';`; return ( {title} {description && (
{description}
)} 引入方法 {importStr} } wrap> {serviceList.map((item) => ( <>{item.icon} <>{item.children} ))} } className={styles.meta}> {items.map((item) => ( <>{item.icon} <>{item.children} ))}
); }, );