sync-menu.tsx 865 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { ElementType } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  4. import getMeta from '../../../utils/meta'
  5. const components = importOverleafModules('editorLeftMenuSync') as {
  6. import: { default: ElementType }
  7. path: string
  8. }[]
  9. export default function SyncMenu() {
  10. const { t } = useTranslation()
  11. const anonymous = getMeta('ol-anonymous') as boolean | undefined
  12. if (anonymous === true || anonymous === undefined) {
  13. return null
  14. }
  15. if (components.length === 0) {
  16. return null
  17. }
  18. return (
  19. <>
  20. <h4>{t('sync')}</h4>
  21. <ul className="list-unstyled nav">
  22. {components.map(({ import: { default: Component }, path }) => (
  23. <li key={path}>
  24. <Component />
  25. </li>
  26. ))}
  27. </ul>
  28. </>
  29. )
  30. }