labs-widget.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. size="2x"
  33. className="rounded bg-primary-subtle"
  34. />
  35. }
  36. optedInDescription={description}
  37. labsEnabled={labsProgram}
  38. />
  39. )
  40. }
  41. export const hidden = () => !isSplitTestEnabled('overleaf-code')
  42. export default LabsWidget