From 69d9dd23b2b05f35475916006b59db78001afa53 Mon Sep 17 00:00:00 2001
From: Kamran Ahmed <kamranahmed.se@gmail.com>
Date: Thu, 17 Apr 2025 10:55:46 +0100
Subject: [PATCH] Add upgrade button on ai page

---
 src/components/AITutor/AITutorLimits.tsx   |  8 ++--
 src/components/GenerateCourse/AICourse.tsx | 44 +++++++++++++---------
 2 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/src/components/AITutor/AITutorLimits.tsx b/src/components/AITutor/AITutorLimits.tsx
index 3cc93730e..6d060be12 100644
--- a/src/components/AITutor/AITutorLimits.tsx
+++ b/src/components/AITutor/AITutorLimits.tsx
@@ -12,7 +12,7 @@ type AITutorLimitsProps = {
 export function AITutorLimits(props: AITutorLimitsProps) {
   const limitUsedPercentage = Math.round((props.used / props.limit) * 100);
 
-  if (props.used <= 0 || props.limit <= 0 || props.isPaidUserLoading) {
+  if (props.limit <= 0 || props.isPaidUserLoading) {
     return null;
   }
 
@@ -29,9 +29,7 @@ export function AITutorLimits(props: AITutorLimitsProps) {
         <span className="max-md:hidden">
           {limitUsedPercentage}% of daily limit used{' '}
         </span>
-        <span className="inline md:hidden">
-          {limitUsedPercentage}% used
-        </span>
+        <span className="inline md:hidden">{limitUsedPercentage}% used</span>
         <button
           onClick={props.onUpgradeClick}
           className="ml-1.5 flex items-center gap-1 rounded-full bg-yellow-600 py-0.5 pr-2 pl-1.5 text-xs text-white"
@@ -42,4 +40,4 @@ export function AITutorLimits(props: AITutorLimitsProps) {
       </p>
     </div>
   );
-} 
\ No newline at end of file
+}
diff --git a/src/components/GenerateCourse/AICourse.tsx b/src/components/GenerateCourse/AICourse.tsx
index e6916d43e..9b93f345d 100644
--- a/src/components/GenerateCourse/AICourse.tsx
+++ b/src/components/GenerateCourse/AICourse.tsx
@@ -11,6 +11,8 @@ import {
   storeFineTuneData,
 } from '../../lib/ai';
 import { cn } from '../../lib/classname';
+import { useIsPaidUser } from '../../queries/billing';
+import { UpgradeAccountModal } from '../Billing/UpgradeAccountModal';
 
 export const difficultyLevels = [
   'beginner',
@@ -29,6 +31,9 @@ export function AICourse(props: AICourseProps) {
   const [about, setAbout] = useState('');
   const [goal, setGoal] = useState('');
   const [customInstructions, setCustomInstructions] = useState('');
+  const [isUpgradeModalOpen, setIsUpgradeModalOpen] = useState(false);
+
+  const { isPaidUser, isLoading: isPaidUserLoading } = useIsPaidUser();
 
   useEffect(() => {
     const lastSessionId = getLastSessionId();
@@ -73,13 +78,28 @@ export function AICourse(props: AICourseProps) {
 
   return (
     <div className="mx-auto flex w-full max-w-3xl flex-grow flex-col pt-4 md:justify-center md:pt-10 lg:pt-0">
-      <h1 className="mb-0.5 text-center text-4xl font-semibold max-md:text-left max-md:text-xl lg:mb-3">
-        What can I help you learn?
-      </h1>
-      <p className="mb-3 text-center text-lg text-balance text-gray-600 max-md:text-left max-md:text-sm lg:mb-6">
-        Enter a topic below to generate a personalized course for it
-      </p>
-
+      <div className="relative">
+        {isUpgradeModalOpen && (
+          <UpgradeAccountModal onClose={() => setIsUpgradeModalOpen(false)} />
+        )}
+        {!isPaidUser && isLoggedIn() && (
+          <div className="absolute bottom-full left-1/2 -translate-x-1/2 -translate-y-8 text-gray-500">
+            You are on the free plan
+            <button
+              onClick={() => setIsUpgradeModalOpen(true)}
+              className="ml-2 rounded-lg bg-yellow-600 px-2 py-1 text-sm text-white hover:opacity-80"
+            >
+              Upgrade to Pro
+            </button>
+          </div>
+        )}
+        <h1 className="mb-0.5 text-center text-4xl font-semibold max-md:text-left max-md:text-xl lg:mb-3">
+          What can I help you learn?
+        </h1>
+        <p className="mb-3 text-center text-lg text-balance text-gray-600 max-md:text-left max-md:text-sm md:mb-6">
+          Enter a topic below to generate a personalized course for it
+        </p>
+      </div>
       <div className="rounded-lg border border-gray-300 bg-white">
         <form
           className="flex flex-col"
@@ -165,16 +185,6 @@ export function AICourse(props: AICourseProps) {
           </button>
         </form>
       </div>
-
-      <div className="mx-auto mt-4 max-w-xl rounded-lg border border-yellow-100 bg-yellow-50 px-5 py-4">
-        <div className="flex items-center gap-3">
-          <p className="text-sm leading-6 text-gray-700">
-            <span className="font-semibold text-gray-900">💡 Pro tip:</span> Use
-            Use specific topics like "JavaScript Promises" or "Go Routines"
-            instead of "JavaScript" or "Go" for better results
-          </p>
-        </div>
-      </div>
     </div>
   );
 }