import { useQuery } from "@tanstack/react-query"; import { wpApi } from "../api/wp-api"; import { toast } from "react-toastify"; import type { ConnectionInfo } from "../types/settings"; import { usePlan } from "../hooks/usePlan"; import { useWorkspace } from "../hooks/useWorkspace"; import { viralySsoUrl } from "../utils/sso"; const PLAN_FEATURES: Record = { Free: ["3 social profiles", "10 posts/month", "Basic analytics"], Influencer: ["5 social profiles", "200 posts/month", "6-month analytics"], Business: ["15 social profiles", "500 posts/month", "12-month analytics", "5 team members"], Agency: ["50 social profiles", "Unlimited posts", "60-month analytics", "15 team members"], Enterprise: ["100 social profiles", "Unlimited posts", "Unlimited analytics", "15 team members"], }; export default function Settings() { const { plan } = usePlan(); const { workspaceName } = useWorkspace(); const { data: connection, isLoading } = useQuery({ queryKey: ["connection"], queryFn: () => wpApi.get("connection"), }); const handleDisconnect = async () => { if (!confirm("Disconnect this site from Viraly?\n\nYou can reconnect at any time.")) return; try { await wpApi.post("disconnect", {}); toast.success("Disconnected. Reloading..."); setTimeout(() => window.location.reload(), 1000); } catch { toast.error("Failed to disconnect."); } }; const features = plan ? (PLAN_FEATURES[plan.plan] || PLAN_FEATURES.Free) : []; return (
{/* Connection & Workspace */}

Connection

Your WordPress site's connection to Viraly.

{isLoading ? (
Loading...
) : ( <>
Status Connected
Site {connection?.siteUrl || viralyWP.siteUrl}
{workspaceName && (
Workspace {workspaceName}
)}
Reconnect
)}
{/* Plan */} {plan && (

Your Plan

You're on the {plan.plan} plan

{plan.plan === "Free" ? "Upgrade" : "Manage Plan"}

{plan.channelsUsed}

of {plan.channelsLimit} profiles

{plan.channelsLocked}

locked

Includes

{features.map((f) => ( {f} ))}
{plan.plan === "Free" && (

Upgrade to unlock more profiles, unlimited posts, AI captions, advanced analytics, and team collaboration.

)}
)} {/* Links */}
); }