/* global React, Icon, Eyebrow, Button, api */ const { useState: useStateSCM, useEffect: useEffectSCM } = React; function SubmitClipModal({ open, onClose, campaign, onSubmitted }){ if (!open) return null; const [url, setUrl] = useStateSCM(""); const [notes, setNotes] = useStateSCM(""); const [busy, setBusy] = useStateSCM(false); const [errMsg, setErrMsg] = useStateSCM(""); const [campaigns, setCampaigns] = useStateSCM([]); const [campaignId, setCampaignId] = useStateSCM(campaign ? campaign.id : ""); useEffectSCM(() => { let mounted = true; if (campaign) { setCampaignId(campaign.id); return; } api.listLiveCampaigns().then(r => { if (!mounted) return; const list = r.error ? [] : r.data; setCampaigns(list); if (list.length === 1) setCampaignId(list[0].id); }); return () => { mounted = false; }; }, [campaign]); const submit = async () => { setErrMsg(""); if (!campaignId) { setErrMsg("Pick a campaign."); return; } if (!url || !/^https?:\/\//i.test(url)) { setErrMsg("Paste a full clip URL (https://…)."); return; } setBusy(true); const r = await api.submitClip({ campaignId, url, notes }); setBusy(false); if (r.error) { setErrMsg(r.error.message || "Something went wrong."); return; } setUrl(""); setNotes(""); onSubmitted && onSubmitted(); }; const camp = campaign || campaigns.find(c => c.id === campaignId); return (
e.stopPropagation()} className="clp-modal-card" style={{width:"100%",maxWidth:480,background:"#fff",borderRadius:20,padding:28,boxShadow:"0 32px 80px rgba(10,10,10,0.2)"}}>
SUBMIT CLIP{camp ? " · " + (camp.name||"").toUpperCase() : ""}

Paste your clip URL

Public TikTok, Instagram Reels, or YouTube Shorts URL. Clips count toward earnings once they pass {camp ? Number(camp.min_views).toLocaleString() : "1,000"} views.

{!campaign && ( )}