"use client"; import { useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Plus, Trash2, Clock, Mail } from "lucide-react"; import { EmailSequenceStep } from "@/lib/sequence-builder"; export function SequenceBuilder() { const [steps, setSteps] = useState([]); const [selectedStep, setSelectedStep] = useState(null); const addStep = () => { const newStep: EmailSequenceStep = { id: `step-${Date.now()}`, order: steps.length + 1, subject: "", body: "", delayDays: steps.length === 0 ? 0 : 1, delayHours: 0, }; setSteps([...steps, newStep]); setSelectedStep(steps.length); }; const removeStep = (index: number) => { const newSteps = steps.filter((_, i) => i !== index); setSteps(newSteps.map((step, i) => ({ ...step, order: i + 1 }))); setSelectedStep(null); }; const updateStep = (index: number, updates: Partial) => { const newSteps = [...steps]; newSteps[index] = { ...newSteps[index], ...updates }; setSteps(newSteps); }; return (

Email Sequences

Create automated follow-up sequences

{/* Sequence Timeline */} Sequence Timeline {steps.length} step{steps.length !== 1 ? 's' : ''} configured {steps.length === 0 ? (

No steps yet. Click "Add Step" to begin.

) : ( steps.map((step, index) => (
setSelectedStep(index)} >
Step {step.order} {index > 0 && ( Wait {step.delayDays}d {step.delayHours || 0}h )}

{step.subject || 'Untitled email'}

)) )}
{/* Step Editor */} {selectedStep !== null ? `Edit Step ${steps[selectedStep].order}` : 'Select a Step'} Configure email content and timing {selectedStep !== null ? (
{selectedStep > 0 && (
updateStep(selectedStep, { delayDays: parseInt(e.target.value) || 0, }) } />
updateStep(selectedStep, { delayHours: parseInt(e.target.value) || 0, }) } />
)}
updateStep(selectedStep, { subject: e.target.value }) } />