import { useState } from "react";
import { CampaignForm, CampaignData } from "@/components/CampaignForm";
import { RecommendationsDisplay } from "@/components/RecommendationsDisplay";
import { useToast } from "@/hooks/use-toast";
import { supabase } from "@/integrations/supabase/client";
import heroBg from "@/assets/hero-bg.jpg";
import { Sparkles } from "lucide-react";
const Index = () => {
const [recommendations, setRecommendations] = useState(null);
const [campaignData, setCampaignData] = useState
(null);
const [isLoading, setIsLoading] = useState(false);
const { toast } = useToast();
const handleFormSubmit = async (data: CampaignData) => {
setCampaignData(data);
setIsLoading(true);
try {
const { data: result, error } = await supabase.functions.invoke("campaign-recommendations", {
body: { campaignData: data },
});
if (error) {
if (error.message?.includes("429")) {
toast({
title: "Rate limit exceeded",
description: "Please try again in a moment.",
variant: "destructive",
});
} else if (error.message?.includes("402")) {
toast({
title: "Credits required",
description: "Please add credits to continue using AI features.",
variant: "destructive",
});
} else {
throw error;
}
return;
}
setRecommendations(result.recommendations);
toast({
title: "Recommendations Generated!",
description: "Your AI-powered campaign strategy is ready.",
});
} catch (error) {
console.error("Error generating recommendations:", error);
toast({
title: "Error",
description: "Failed to generate recommendations. Please try again.",
variant: "destructive",
});
} finally {
setIsLoading(false);
}
};
return (
Holiday Marketing, Simplified.
AI-Powered Campaign Planning.
Plan winning holiday advertising campaigns with AI-powered insights. Get strategic recommendations for audiences, creative formats, and campaign strategies tailored to seasonal marketing success.
{recommendations && (
)}
);
};
export default Index;