import { Box, Button, Dialog, DialogActionButton, DialogActions, DialogCancelButton, DialogContent, DialogHeader, Text, } from "@prismicio/editor-ui"; import { useEffect, useState } from "react"; import { telemetry } from "@/apiClient"; import { useExperimentVariant } from "@/hooks/useExperimentVariant"; type DevCollaborationExperimentPayload = { cardButtonLabel: string; cardDescription: string; cardTitle: string; dialogButtonLabel: string; dialogButtonLink: string; dialogDescription: string; dialogTitle: string; }; export function DevCollaborationExperiment() { const devCollaborationExperiment = useExperimentVariant( "slicemachine-dev-collaboration", ); const [isExperimentDialogOpen, setIsExperimentDialogOpen] = useState(false); const payload = devCollaborationExperiment?.payload as | DevCollaborationExperimentPayload | undefined; useEffect(() => { if (devCollaborationExperiment?.value === "on" && payload !== undefined) { void telemetry.track({ event: "dev-collab:workflow-stub-displayed" }); } }, [devCollaborationExperiment, payload]); if (devCollaborationExperiment?.value !== "on" || payload === undefined) { return null; } return ( <> {payload.cardTitle} {payload.cardDescription} { if (!open) { setIsExperimentDialogOpen(false); } }} open={isExperimentDialogOpen} size={{ height: "auto", width: 448 }} > {payload.dialogDescription} { void telemetry.track({ event: "dev-collab:join-beta-clicked", }); window.open(payload.dialogButtonLink, "_blank"); setIsExperimentDialogOpen(false); }} > {payload.dialogButtonLabel} ); }