"use client" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Separator } from "@/components/ui/separator" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { useRouter, useSearchParams } from "next/navigation" import Link from "next/link" import * as React from "react" import { useQuery } from "convex/react" import { api } from "@/convex/_generated/api" export default function SettingsPage() { const router = useRouter() const searchParams = useSearchParams() const profile = useQuery(api.users.getCurrentProfile) const user = profile?.user const accounts = profile?.accounts ?? [] const allowedTabs = React.useMemo(() => ["account", "billing"], []) const queryTab = searchParams.get("tab") const initialTab = allowedTabs.includes(queryTab ?? "") ? (queryTab as string) : "account" const [tab, setTab] = React.useState(initialTab) React.useEffect(() => { if (initialTab !== tab) { setTab(initialTab) } }, [initialTab, tab]) const checkoutHref = "/api/checkout" return (
Manage your subscription, billing, and account details in one place.
{user?.name || user?.email || "Not provided"}
{user?.email || "Not provided"}
Name
{user?.name || "Not provided"}
{user?.email || "Not provided"}
Phone
{user?.phone || "Not provided"}
Sign-in Methods
{accounts.length > 0 ? Array.from(new Set(accounts.map((account) => { if (account.provider === "password") return "Password"; if (account.provider === "google") return "Google"; return account.provider; }))).join(", ") : "Not provided"}
Email Verified
{user?.emailVerificationTime ? new Date(user.emailVerificationTime).toLocaleDateString() : "Not verified"}
User ID
{user?._id || "Not provided"}
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Starter
Upgrade to unlock full opportunity search and automation.
Pro includes
Unlimited projects and data sources
Advanced opportunity search
Priority analysis queue
No invoices yet
Invoices will appear after your first payment.