labs-widget.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import LabsExperimentWidget, {
  2. LabsExperimentWidgetProps,
  3. } from '@/shared/components/labs/labs-experiments-widget'
  4. import MaterialIcon from '@/shared/components/material-icon'
  5. import { isInExperiment } from '@/utils/labs-utils'
  6. import { isSplitTestEnabled } from '@/utils/splitTestUtils'
  7. import { useState } from 'react'
  8. type LabsWidgetProps = Pick<LabsExperimentWidgetProps, 'setErrorMessage'> & {
  9. labsProgram: boolean
  10. }
  11. const LabsWidget = ({ setErrorMessage, labsProgram }: LabsWidgetProps) => {
  12. const [optedIn, setOptedIn] = useState(isInExperiment('overleaf-code'))
  13. if (!isSplitTestEnabled('overleaf-code')) {
  14. return null
  15. }
  16. const description = (
  17. <span>
  18. Run Python code while editing <code>.py</code> files
  19. </span>
  20. )
  21. return (
  22. <LabsExperimentWidget
  23. description={description}
  24. experimentName="overleaf-code"
  25. title="Overleaf Code (Python execution)"
  26. setOptedIn={setOptedIn}
  27. setErrorMessage={setErrorMessage}
  28. optedIn={optedIn}
  29. logo={
  30. <MaterialIcon
  31. type="code"
  32. className="rounded bg-primary-subtle labs-experiment-icon"
  33. />
  34. }
  35. optedInDescription={description}
  36. labsEnabled={labsProgram}
  37. />
  38. )
  39. }
  40. export const hidden = () => !isSplitTestEnabled('overleaf-code')
  41. export default LabsWidget