diff --git a/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx index 77ca38c38..6779dc5d0 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx @@ -2,13 +2,14 @@ import { IconCalendar, IconMailFilled } from "@tabler/icons-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { Check, ExternalLink, Gift, Mail, Star } from "lucide-react"; +import { Check, ExternalLink, Gift, Mail, Star, Zap } from "lucide-react"; import { motion } from "motion/react"; import Link from "next/link"; import { useEffect } from "react"; import { toast } from "sonner"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; -import { Card, CardContent } from "@/components/ui/card"; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Dialog, DialogContent, @@ -33,29 +34,24 @@ import { cn } from "@/lib/utils"; export default function MorePagesPage() { const queryClient = useQueryClient(); - // Track page view on mount useEffect(() => { trackIncentivePageViewed(); }, []); - // Fetch tasks from API const { data, isLoading } = useQuery({ queryKey: ["incentive-tasks"], queryFn: () => incentiveTasksApiService.getTasks(), }); - // Mutation to complete a task const completeMutation = useMutation({ mutationFn: incentiveTasksApiService.completeTask, onSuccess: (response, taskType) => { if (response.success) { toast.success(response.message); - // Track task completion const task = data?.tasks.find((t) => t.task_type === taskType); if (task) { trackIncentiveTaskCompleted(taskType, task.pages_reward); } - // Invalidate queries to refresh data queryClient.invalidateQueries({ queryKey: ["incentive-tasks"] }); queryClient.invalidateQueries({ queryKey: ["user"] }); } @@ -72,21 +68,21 @@ export default function MorePagesPage() { } }; - const allCompleted = data?.tasks.every((t) => t.completed) ?? false; - return (
{/* Header */} -
+

Get More Pages

-

Complete tasks to earn additional pages

+

+ Complete tasks to earn additional pages +

{/* Tasks */} @@ -112,26 +108,37 @@ export default function MorePagesPage() {
- {task.completed ? : } + {task.completed ? ( + + ) : ( + + )}
-
+

{task.title}

-

+{task.pages_reward} pages

+

+ +{task.pages_reward} pages +

)} - {/* Contact */} - -
-

- {allCompleted ? "Thanks! Need even more pages?" : "Need more pages?"} -

- open && trackIncentiveContactOpened()}> - - - - - - Contact Us - Schedule a meeting or send us an email. - -
- - - Schedule a Meeting - -
- - or - + {/* PRO Upgrade */} + + + + +
+ + Upgrade to PRO + + FREE + +
+ + For a limited time, get 6,000 additional pages at + no cost. Contact us and we'll upgrade your account instantly. + +
+ + open && trackIncentiveContactOpened()}> + + + + + + Get in Touch + + Pick the option that works best for you. + + +
+ +
- - - rohan@surfsense.com - -
- -
-
+ + + +
); diff --git a/surfsense_web/components/layout/ui/sidebar/PageUsageDisplay.tsx b/surfsense_web/components/layout/ui/sidebar/PageUsageDisplay.tsx index 02d74b8bb..19f27a538 100644 --- a/surfsense_web/components/layout/ui/sidebar/PageUsageDisplay.tsx +++ b/surfsense_web/components/layout/ui/sidebar/PageUsageDisplay.tsx @@ -1,8 +1,9 @@ "use client"; -import { Plus } from "lucide-react"; +import { Zap } from "lucide-react"; import Link from "next/link"; import { useParams } from "next/navigation"; +import { Badge } from "@/components/ui/badge"; import { Progress } from "@/components/ui/progress"; interface PageUsageDisplayProps { @@ -27,10 +28,15 @@ export function PageUsageDisplay({ pagesUsed, pagesLimit }: PageUsageDisplayProp - - Get More Pages + + + Upgrade to PRO + + + FREE +