'use client' import { useEffect, useState } from 'react' import Link from 'next/link' import { motion } from 'framer-motion' import { useAuth } from '@/lib/auth/context' import { initiateOAuthFlow, initiateSignupFlow } from '@/lib/api/oauth' import { listSites, deleteSite, type Site } from '@/lib/api/sites' import { getSubscription, type SubscriptionDetails } from '@/lib/api/billing' import { LoadingOverlay } from '@ciphera-net/ui' import SiteList from '@/components/sites/SiteList' import { Button } from '@ciphera-net/ui' import { BarChartIcon, LockIcon, ZapIcon, CheckCircleIcon, XIcon, GlobeIcon } from '@ciphera-net/ui' import { toast } from '@ciphera-net/ui' import { getAuthErrorMessage } from '@ciphera-net/ui' function DashboardPreview() { return (
Dashboard Preview
The lightweight, privacy-friendly alternative.
| Feature | Pulse | Google Analytics |
|---|---|---|
| {row.feature} |
{row.pulse === true ? (
|
{row.ga === true ? ( Yes ) : ( {row.ga} )} |
{feature.desc}
No credit card required • Cancel anytime
Finish setting up your workspace and add your first site.
Manage your analytics sites and view insights.
Total Sites
{sites.length}
Total Visitors (24h)
--
Plan & usage
{subscriptionLoading ? (...
) : subscription ? ( <>{(() => { const raw = subscription.plan_id?.startsWith('price_') ? 'Pro' : subscription.plan_id === 'free' || !subscription.plan_id ? 'Free' : subscription.plan_id const label = raw === 'Free' || raw === 'Pro' ? raw : raw.charAt(0).toUpperCase() + raw.slice(1) return `${label} Plan` })()}
{(typeof subscription.sites_count === 'number' || (subscription.pageview_limit > 0 && typeof subscription.pageview_usage === 'number')) && ({typeof subscription.sites_count === 'number' && ( Sites: {subscription.plan_id === 'solo' && subscription.sites_count > 0 ? `${subscription.sites_count}/1` : subscription.sites_count} )} {typeof subscription.sites_count === 'number' && subscription.pageview_limit > 0 && typeof subscription.pageview_usage === 'number' && ' · '} {subscription.pageview_limit > 0 && typeof subscription.pageview_usage === 'number' && ( Pageviews: {subscription.pageview_usage.toLocaleString()}/{subscription.pageview_limit.toLocaleString()} )}
)}Free Plan
)}Connect a domain to start collecting privacy-friendly analytics. You can add more sites later from the dashboard.