import React, { type ComponentPropsWithoutRef, type ReactNode } from 'react'; import { GrSystem } from 'react-icons/gr'; import { LoginPageFooter } from './LoginPageFooter'; import { LoginPageForm, type LoginFormData } from './LoginPageForm'; import { LoginPageHeader } from './LoginPageHeader'; import { LoginPageHero } from './LoginPageHero'; import { LoginPageLayout } from './LoginPageLayout'; import { LoginPageSocialLogin } from './LoginPageSocialLogin'; import { UserAgentSummary } from './UserAgentSummary'; export namespace LoginPage { export type FormData = LoginFormData; export type LinkProps = { url?: string; text?: string; }; export interface CompositeProps extends Omit, 'title' | 'onSubmit'> { onSubmit?: (data: LoginFormData) => void; defaultValues?: Partial; title?: string; subtitle?: ReactNode; showOrg?: boolean; hero?: ReactNode; logo?: ReactNode; onForgetPassword?: () => void; onRegister?: () => void; socials?: Array<{ name: string; icon?: ReactNode; onClick: () => void; }>; footer?: { policy?: LinkProps; terms?: LinkProps; beian?: LinkProps; }; } export const Composite = ({ onSubmit = () => undefined, hero, children, defaultValues, showOrg, title, subtitle = '登录系统', socials, footer: { policy, terms, beian } = {}, logo = , className, onForgetPassword, onRegister, ...props }: CompositeProps) => { const content = ( <> {socials && } {children} ); const footer = ( <> ); return ( } content={content} footer={footer} hero={hero} {...props} /> ); }; export const Form = LoginPageForm; export const Header = LoginPageHeader; export const Hero = LoginPageHero; export const SocialLogin = LoginPageSocialLogin; export const Layout = LoginPageLayout; export const Footer = LoginPageFooter; }