import React, { useState } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Progress } from "@/components/ui/progress"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"; import { CheckCircle, Clock, Target, PlusCircle, Search } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; const MilestoneTracker = () => { const location = useLocation(); const initialCareer = location.state?.career || ""; const [careerClusters, setCareerClusters] = useState({}); const [selectedCluster, setSelectedCluster] = useState(null); const [selectedSubdivision, setSelectedSubdivision] = useState(null); const [selectedCareer, setSelectedCareer] = useState(initialCareer); const [filteredClusters, setFilteredClusters] = useState([]); const [activeTab, setActiveTab] = useState("career"); const [customMilestones, setCustomMilestones] = useState({ career: [], financial: [], retirement: [] }); const [isDialogOpen, setIsDialogOpen] = useState(false); const [newMilestone, setNewMilestone] = useState(""); const [careerSearch, setCareerSearch] = useState(""); const [filteredCareers, setFilteredCareers] = useState(careerClusters); useEffect(() => { const fetchUserProfile = async () => { try { const response = await fetch("/api/user/profile", { method: "GET", credentials: "include", // Ensure cookies/session are sent }); if (response.ok) { const data = await response.json(); setIsPremiumUser(data.is_premium === 1); // Expecting { is_premium: 0 or 1 } } else { setIsPremiumUser(false); // Default to false if there's an error } } catch (error) { console.error("Error fetching user profile:", error); setIsPremiumUser(false); } }; fetchUserProfile(); }, []); if (isPremiumUser === null) { return
Loading...
; // Show loading state while fetching } if (!isPremiumUser) { return (

Access Restricted

Upgrade to Aptiva Premium to access the Milestone Tracker.

); } useEffect(() => { fetch("/data/career_clusters.json") .then((response) => response.json()) .then((data) => { setCareerClusters(data); setFilteredClusters(Object.keys(data)); }) .catch((error) => console.error("Error loading career clusters:", error)); }, []); const handleAddMilestone = () => { if (newMilestone.trim() !== "") { setCustomMilestones((prev) => ({ ...prev, [activeTab]: [...prev[activeTab], { title: newMilestone, status: "upcoming", progress: 0 }], })); setNewMilestone(""); setIsDialogOpen(false); } }; const handleCareerSearch = (e) => { const query = e.target.value.toLowerCase(); setCareerSearch(query); setFilteredCareers( careerClusters.filter((career) => career.toLowerCase().includes(query)) ); }; return (

Milestone Tracker

{/* Career Cluster Selection */}

Search & Select a Career Cluster

{filteredClusters.map((cluster, index) => (
{ setSelectedCluster(cluster); setSelectedSubdivision(null); setSelectedCareer(null); }} > {cluster}
))}
{/* Subdivision Selection within Cluster */} {selectedCluster && careerClusters[selectedCluster] && (

Select a Specialization in {selectedCluster}

{Object.keys(careerClusters[selectedCluster]).map((subdivision, index) => (
{ setSelectedSubdivision(subdivision); setSelectedCareer(null); }} > {subdivision}
))}
)} {/* Career Selection within Subdivision */} {selectedSubdivision && careerClusters[selectedCluster][selectedSubdivision] && (

Select a Career in {selectedSubdivision}

{Object.keys(careerClusters[selectedCluster][selectedSubdivision]).map((career, index) => (
setSelectedCareer(career)} > {career}
))}
)} {/* Milestone Tracker Section */} Career Financial Retirement {/* Add Milestone Section */} Add a New Milestone setNewMilestone(e.target.value)} placeholder="Enter milestone title" /> {/* Display User-Added Milestones */} {customMilestones[activeTab].map((milestone, index) => (
{milestone.status === "completed" && } {milestone.status === "in-progress" && } {milestone.status === "upcoming" && }

{milestone.title}

))}
Add a New Milestone setNewMilestone(e.target.value)} placeholder="Enter milestone title" />
); }; export default MilestoneTracker;