import * as React from 'react'; import classNames from 'classnames'; import { FormattedMessage } from 'react-intl'; import { Link } from 'bisheng/router'; import type { MenuProps } from 'antd'; import { MenuOutlined } from '@ant-design/icons'; import { Menu } from 'antd'; import { getEcosystemGroup } from './More'; import * as utils from '../../utils'; import type { SharedProps } from './interface'; import './Navigation.less'; export interface NavigationProps extends SharedProps { isMobile: boolean; isRTL: boolean; pathname: string; responsive: null | 'narrow' | 'crowded'; location: { pathname: string; query: any }; directionText: string; showTechUIButton: boolean; onLangChange: () => void; onDirectionChange: () => void; } export default ({ isZhCN, isMobile, pathname, responsive, location, directionText, showTechUIButton, onLangChange, onDirectionChange, }: NavigationProps) => { const menuMode = isMobile ? 'inline' : 'horizontal'; const module = pathname.split('/').slice(0, -1).join('/'); let activeMenuItem = module || 'home'; if (location.pathname === 'changelog' || location.pathname === 'changelog-cn') { activeMenuItem = 'docs/react'; } else if (location.pathname === 'docs/resources' || location.pathname === 'docs/resources-cn') { activeMenuItem = 'docs/resources'; } let additional: MenuProps['items']; const additionalItems: MenuProps['items'] = [ { label: ( Github ), key: 'github', }, { label: , onClick: onLangChange, key: 'switch-lang', }, { label: directionText, onClick: onDirectionChange, key: 'switch-direction', }, ...getEcosystemGroup(), ]; if (isMobile) { additional = additionalItems; } else if (responsive === 'crowded') { additional = [ { label: , key: 'additional', children: [...additionalItems], }, ]; } const items: MenuProps['items'] = [ { label: ( ), key: 'docs/spec', }, { label: ( ), key: 'docs/react', }, { label: ( ), key: 'components', }, { label: ( ), key: 'docs/resources', }, showTechUIButton ? { label: ( TechUI ), key: 'tech-ui', } : null, isZhCN && typeof window !== 'undefined' && window.location.host !== 'ant-design.antgroup.com' && window.location.host !== 'ant-design.gitee.io' ? { label: '国内镜像', key: 'mirror', children: [ { label: 官方镜像, icon: ( logo ), key: 'antgroup', }, { label: Gitee 镜像, icon: ( gitee ), key: 'gitee', }, ], } : null, ...(additional ?? []), ]; return ( ); };