import React, { Fragment, type ComponentPropsWithoutRef, type FC, type ReactNode } from 'react'; import { cn } from '../../utils/cn'; type LinkProps = { url?: string; text?: string; }; export interface FooterProps extends ComponentPropsWithoutRef<'footer'> { policy?: LinkProps; terms?: LinkProps; beian?: LinkProps; } function renderLink({ text, url }: { text?: string; url?: string }) { if (!text || !url) { return null; } return ( {text} ); } function joinNode(nodes: ReactNode[], join: ReactNode) { return nodes.filter(Boolean).map((n, i) => { const last = i >= nodes.length - 1; return ( {n} {!last && join} ); }); } export const LoginPageFooter: FC = ({ policy, terms, beian, className, ...props }) => { return (
{joinNode( [ © {new Date().getFullYear()}, renderLink({ text: '隐私政策', ...policy }), renderLink({ text: '服务条款', ...terms }), renderLink({ url: 'https://beian.miit.gov.cn/', ...beian }), ].filter(Boolean), , )}
); };