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;