import React, { useMemo, useState } from "react";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
import { RefreshCw, TrendingUp, Calculator } from "lucide-react";
export default function ROIMonetizer() {
const presets = {
infoProduct: {
name: "Инфопродукт: Tripwire $29 → Core $499",
adBudgetDay: 200,
cpm: 8,
ctrPct: 1.8,
landCvrPct: 28,
lead2TripPct: 9,
tripPrice: 29,
tripRefundPct: 4,
upsellTakePct: 15,
upsellPrice: 79,
coreViewPct: 35,
coreBuyPct: 2.2,
corePrice: 499,
planSharePct: 40,
planDefaultPct: 7,
ltvAddon: 35,
},
aiFunnels: {
name: "AI‑воронки: Tripwire $49 → Core $990",
adBudgetDay: 300,
cpm: 10,
ctrPct: 2.2,
landCvrPct: 30,
lead2TripPct: 12,
tripPrice: 49,
tripRefundPct: 3,
upsellTakePct: 18,
upsellPrice: 149,
coreViewPct: 40,
coreBuyPct: 3,
corePrice: 990,
planSharePct: 50,
planDefaultPct: 6,
ltvAddon: 55,
},
chinaBuyers: {
name: "Байєрство з Китаю: Tripwire $19 → Core $699",
adBudgetDay: 150,
cpm: 6,
ctrPct: 2.5,
landCvrPct: 32,
lead2TripPct: 10,
tripPrice: 19,
tripRefundPct: 5,
upsellTakePct: 20,
upsellPrice: 59,
coreViewPct: 30,
coreBuyPct: 2.5,
corePrice: 699,
planSharePct: 35,
planDefaultPct: 8,
ltvAddon: 25,
},
investments: {
name: "Инвестиции: Tripwire $9 → Core $199",
adBudgetDay: 100,
cpm: 7,
ctrPct: 2.8,
landCvrPct: 35,
lead2TripPct: 11,
tripPrice: 9,
tripRefundPct: 2,
upsellTakePct: 12,
upsellPrice: 39,
coreViewPct: 45,
coreBuyPct: 3.5,
corePrice: 199,
planSharePct: 25,
planDefaultPct: 5,
ltvAddon: 15,
},
};
const [selectedPreset, setSelectedPreset] = useState("infoProduct");
const preset = presets[selectedPreset];
const revenue = useMemo(() => {
const leads = (preset.adBudgetDay / preset.cpm) * 1000 * (preset.ctrPct / 100) * (preset.landCvrPct / 100);
const tripSales = leads * (preset.lead2TripPct / 100);
const tripRevenue = tripSales * preset.tripPrice * (1 - preset.tripRefundPct / 100);
const upsellRevenue = tripSales * (preset.upsellTakePct / 100) * preset.upsellPrice;
const coreRevenue = tripSales * (preset.coreViewPct / 100) * (preset.coreBuyPct / 100) * preset.corePrice;
return (tripRevenue + upsellRevenue + coreRevenue + preset.ltvAddon * tripSales).toFixed(0);
}, [preset]);
return (
{Object.keys(presets).map((key) => (
{presets[key].name}
))}
Прогноз выручки в день
${revenue}
Параметры из шаблона «{preset.name}» основаны на реальных показателях американских direct‑response воронок.
);
}