integration-linking-section.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { useTranslation } from 'react-i18next'
  2. import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
  3. const integrationLinkingWidgets = importOverleafModules(
  4. 'integrationLinkingWidgets'
  5. )
  6. function IntegrationLinkingSection() {
  7. const { t } = useTranslation()
  8. return (
  9. <>
  10. <h3>{t('integrations')}</h3>
  11. <p>{t('linked_accounts_explained')}</p>
  12. <div className="settings-widgets-container">
  13. {integrationLinkingWidgets.map(
  14. ({ import: importObject, path }, widgetIndex) => (
  15. <IntegrationLinkingWidget
  16. key={Object.keys(importObject)[0]}
  17. ModuleComponent={Object.values(importObject)[0]}
  18. isLast={widgetIndex === integrationLinkingWidgets.length - 1}
  19. />
  20. )
  21. )}
  22. </div>
  23. </>
  24. )
  25. }
  26. type IntegrationLinkingWidgetProps = {
  27. ModuleComponent: any
  28. isLast: boolean
  29. }
  30. function IntegrationLinkingWidget({
  31. ModuleComponent,
  32. isLast,
  33. }: IntegrationLinkingWidgetProps) {
  34. return (
  35. <>
  36. <ModuleComponent />
  37. {isLast ? null : <hr />}
  38. </>
  39. )
  40. }
  41. export default IntegrationLinkingSection