survey-widget.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import usePersistedState from '../../../shared/hooks/use-persisted-state'
  2. import getMeta from '../../../utils/meta'
  3. import { Survey } from '../../../../../types/project/dashboard/survey'
  4. import { useCallback } from 'react'
  5. export default function SurveyWidget() {
  6. const survey: Survey = getMeta('ol-survey')
  7. const [dismissedSurvey, setDismissedSurvey] = usePersistedState(
  8. `dismissed-${survey?.name}`,
  9. false
  10. )
  11. const dismissSurvey = useCallback(() => {
  12. setDismissedSurvey(true)
  13. }, [setDismissedSurvey])
  14. if (!survey?.name || dismissedSurvey) {
  15. return null
  16. }
  17. return (
  18. <div className="project-list-sidebar-survey">
  19. {survey.preText}&nbsp;
  20. <a
  21. className="project-list-sidebar-survey-link"
  22. href={survey.url}
  23. target="_blank"
  24. rel="noreferrer noopener"
  25. >
  26. {survey.linkText}
  27. </a>
  28. <button
  29. className="project-list-sidebar-survey-dismiss"
  30. type="button"
  31. title="Dismiss Overleaf survey"
  32. onClick={dismissSurvey}
  33. >
  34. <span aria-hidden> &times;</span>
  35. </button>
  36. </div>
  37. )
  38. }