import { createSignal, For, Show } from "solid-js"; import { Title } from "@solidjs/meta"; import { useNavigate } from "@solidjs/router"; import { Button, Input, Badge } from "~/components/ui"; import { submitOnboarding } from "~/lib/auth"; import type { OnboardingData } from "~/lib/auth"; const plans = [ { id: "basic", name: "Basic", price: "Free", features: ["Basic monitoring", "1 email address", "1 phone number"], }, { id: "plus", name: "Plus", price: "$9.99/mo", features: [ "Advanced monitoring", "Unlimited emails & phones", "Dark web scanning", "Real-time alerts", ], }, { id: "premium", name: "Premium", price: "$19.99/mo", features: [ "Everything in Plus", "Family members (up to 5)", "Priority support", "Identity restoration assistance", ], }, ]; const steps = [ "Choose Plan", "Add Watchlist", "Invite Family", "Complete", ]; export default function OnboardingPage() { const navigate = useNavigate(); const [step, setStep] = createSignal(0); const [plan, setPlan] = createSignal("plus"); const [watchlistItem, setWatchlistItem] = createSignal(""); const [watchlistItems, setWatchlistItems] = createSignal([]); const [familyInput, setFamilyInput] = createSignal(""); const [familyInvites, setFamilyInvites] = createSignal([]); const [submitting, setSubmitting] = createSignal(false); const [watchlistError, setWatchlistError] = createSignal(""); function addWatchlistItem() { const val = watchlistItem().trim(); if (!val) { setWatchlistError("Please enter an email or phone number"); return; } if (watchlistItems().includes(val)) { setWatchlistError("This item is already in your watchlist"); return; } setWatchlistError(""); setWatchlistItems((prev) => [...prev, val]); setWatchlistItem(""); } function removeWatchlistItem(idx: number) { setWatchlistItems((prev) => prev.filter((_, i) => i !== idx)); } function addFamilyInvite() { const val = familyInput().trim(); if (!val) return; if (familyInvites().includes(val)) return; setFamilyInvites((prev) => [...prev, val]); setFamilyInput(""); } function removeFamilyInvite(idx: number) { setFamilyInvites((prev) => prev.filter((_, i) => i !== idx)); } async function completeOnboarding() { setSubmitting(true); try { const data: OnboardingData = { plan: plan(), watchlistItems: watchlistItems(), familyInvites: familyInvites(), }; await submitOnboarding(data); setStep(3); } finally { setSubmitting(false); } } return (
Set Up Your Account — ShieldAI
{(label, i) => ( <>
{i() < step() ? ( ) : ( i() + 1 )}
{i() < steps.length - 1 && (
)} )}

Choose your plan

Select the plan that works best for you. You can upgrade anytime.

{(p) => ( )}

Add your first watchlist item

Add an email address or phone number to monitor.

{ setWatchlistItem(e.currentTarget.value); setWatchlistError(""); }} error={watchlistError()} />
0}>
{(item, i) => (
{item}
)}

Invite family members

Optional. Add family members to extend protection.

setFamilyInput(e.currentTarget.value)} />
0}>
{(email, i) => (
{email}
)}

You're all set!

Your ShieldAI account is ready. We're already monitoring your selected items and will alert you of any threats.

{!submitting && ( )}
); }