Files
overleaf-cep/services/web/frontend/js/features/overleaf-code/labs-widget.tsx
Domagoj Kriskovic 3b17b0a46a feat: implement Overleaf Code experiment with Python execution support
GitOrigin-RevId: 54ca98525b2ae056fb34b3713320e868b8c19613
2026-03-09 09:05:39 +00:00

50 lines
1.3 KiB
TypeScript

import LabsExperimentWidget, {
LabsExperimentWidgetProps,
} from '@/shared/components/labs/labs-experiments-widget'
import MaterialIcon from '@/shared/components/material-icon'
import { isInExperiment } from '@/utils/labs-utils'
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
import { useState } from 'react'
type LabsWidgetProps = Pick<LabsExperimentWidgetProps, 'setErrorMessage'> & {
labsProgram: boolean
}
const LabsWidget = ({ setErrorMessage, labsProgram }: LabsWidgetProps) => {
const [optedIn, setOptedIn] = useState(isInExperiment('overleaf-code'))
if (!isSplitTestEnabled('overleaf-code')) {
return null
}
const description = (
<span>
Run Python code while editing <code>.py</code> files
</span>
)
return (
<LabsExperimentWidget
description={description}
experimentName="overleaf-code"
title="Overleaf Code (Python execution)"
setOptedIn={setOptedIn}
setErrorMessage={setErrorMessage}
optedIn={optedIn}
logo={
<MaterialIcon
type="code"
size="2x"
className="rounded bg-primary-subtle"
/>
}
optedInDescription={description}
labsEnabled={labsProgram}
/>
)
}
export const hidden = () => !isSplitTestEnabled('overleaf-code')
export default LabsWidget