Skip to content

Commit 0a6313a

Browse files
Merge pull request #51 from Eric-Zhang-Developer/feat/tree-quest-display
Feat/tree quest display
2 parents 47f93a7 + 02fe61a commit 0a6313a

File tree

3 files changed

+41
-22
lines changed

3 files changed

+41
-22
lines changed

public/dashboard.jpg

151 KB
Loading

src/app/dashboard/page.tsx

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Link from "next/link";
33
import { createClient as createServerClient } from "../../lib/supabase/server";
44
import { Cinzel } from "next/font/google";
55
import checkUserCompletedQuizzes from "@/lib/checkUserCompletedQuizzes";
6+
import { ArrowBigLeft, ArrowBigDown, ArrowBigRight } from "lucide-react";
67

78
const cinzel = Cinzel({
89
subsets: ["latin"],
@@ -45,29 +46,27 @@ export default async function DashboardPage() {
4546
"btn border-2 border-cyan-400 text-cyan-400 bg-transparent hover:bg-cyan-900/50 hover:border-cyan-200 hover:text-cyan-200 shadow-lg shadow-cyan-500/50 transition duration-300 ease-in-out";
4647

4748
const greyButtonClass =
48-
"btn border-2 border-gray-400 text-gray-400 bg-transparent hover:bg-gray-900/50 hover:border-gray-200 hover:text-gray-200 shadow-lg shadow-gray-500/50 transition duration-300 ease-in-out";
49+
"btn border-2 border-gray-400 text-gray-400 bg-black/50 backdrop-blur-sm hover:bg-gray-900/50 hover:border-gray-200 hover:text-gray-200 shadow-lg shadow-gray-500/50 transition duration-300 ease-in-out";
4950

5051
const greenButtonClass =
51-
"btn border-2 border-emerald-400 text-emerald-400 bg-transparent hover:bg-emerald-900/50 hover:border-emerald-200 hover:text-emerald-200 shadow-lg shadow-emerald-500/50 transition duration-300 ease-in-out";
52+
"btn border-2 border-emerald-400 text-emerald-400 bg-emerald-900/60 backdrop-blur-sm hover:bg-emerald-900/50 hover:border-emerald-200 hover:text-emerald-200 shadow-lg shadow-emerald-400/70 transition duration-300 ease-in-out";
5253

53-
// helper
54-
const getButtonClass = (complete: boolean) =>
55-
complete ? greenButtonClass : greyButtonClass;
54+
// helpers
55+
const getButtonClass = (complete: boolean) => (complete ? greenButtonClass : greyButtonClass);
56+
const getArrowColor = (complete: boolean) => (complete ? "text-emerald-400" : "text-gray-400");
5657

5758
return (
5859
<main
5960
className={`relative min-h-dvh p-8 text-white ${cinzel.className}`}
6061
style={{
61-
backgroundImage: "url('/dashboard.png')",
62+
backgroundImage: "url('/dashboard.jpg')",
6263
backgroundSize: "cover",
6364
backgroundPosition: "center",
6465
}}
6566
>
6667
<div className="flex justify-between items-start w-full">
6768
<div className="flex flex-col gap-4 p-0 w-fit">
68-
<h1 className="text-white text-5xl font-bold tracking-wider mb-4">
69-
Dashboard
70-
</h1>
69+
<h1 className="text-white text-5xl font-bold tracking-wider mb-4">Dashboard</h1>
7170
<div className="flex flex-col gap-4 w-32">
7271
<Link href="/" className={celestialButtonClasses}>
7372
<span>Home</span>
@@ -88,44 +87,65 @@ export default async function DashboardPage() {
8887
</div>
8988

9089
{/* Tutorials */}
91-
<div className="absolute bottom-16 left-1/2 -translate-x-1/2">
92-
<div className="flex flex-col gap-6 w-64 text-center">
90+
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-black/70 backdrop-blur-md rounded-2xl p-8 border border-white/10">
91+
<div className="grid grid-cols-[1fr_auto_1fr] gap-4 items-center w-[500px]">
92+
{/* Row 1: Hello World → Variables */}
9393
<Link href="tutorial-hello-world" className={getButtonClass(isHelloWorldComplete)}>
9494
Hello World
9595
</Link>
96-
96+
<ArrowBigRight className={getArrowColor(isVariablesComplete)} size={28} />
9797
<Link href="tutorial-variables" className={getButtonClass(isVariablesComplete)}>
9898
Variables
9999
</Link>
100100

101-
<Link href="tutorial-user-input" className={getButtonClass(isUserInputComplete)}>
102-
User Input
103-
</Link>
101+
<div className="col-span-3 flex justify-end pr-12">
102+
<ArrowBigDown className={getArrowColor(isUserInputComplete)} size={28} />
103+
</div>
104104

105+
{/* Row 2: Conditionals ← User Input */}
105106
<Link href="tutorial-conditionals" className={getButtonClass(isConditionalsComplete)}>
106107
Conditionals
107108
</Link>
109+
<ArrowBigLeft className={getArrowColor(isConditionalsComplete)} size={28} />
110+
<Link href="tutorial-user-input" className={getButtonClass(isUserInputComplete)}>
111+
User Input
112+
</Link>
108113

114+
<div className="col-span-3 flex justify-start pl-12">
115+
<ArrowBigDown className={getArrowColor(isLoopsComplete)} size={28} />
116+
</div>
117+
118+
{/* Row 3: Loops → Math */}
109119
<Link href="tutorial-loops" className={getButtonClass(isLoopsComplete)}>
110120
Loops
111121
</Link>
112-
122+
<ArrowBigRight className={getArrowColor(isMathComplete)} size={28} />
113123
<Link href="tutorial-math" className={getButtonClass(isMathComplete)}>
114124
Math
115125
</Link>
116126

117-
<Link href="tutorial-functions" className={getButtonClass(isFunctionsComplete)}>
118-
Functions
119-
</Link>
127+
<div className="col-span-3 flex justify-end pr-12">
128+
<ArrowBigDown className={getArrowColor(isFunctionsComplete)} size={28} />
129+
</div>
120130

131+
{/* Row 4: Lists & Arrays ← Functions */}
121132
<Link href="tutorial-lists-arrays" className={getButtonClass(isListsArraysComplete)}>
122133
Lists & Arrays
123134
</Link>
135+
<ArrowBigLeft className={getArrowColor(isListsArraysComplete)} size={28} />
136+
<Link href="tutorial-functions" className={getButtonClass(isFunctionsComplete)}>
137+
Functions
138+
</Link>
124139

140+
<div className="col-span-3 flex justify-start pl-12">
141+
<ArrowBigDown className={getArrowColor(isDictionaryComplete)} size={28} />
142+
</div>
143+
144+
{/* Row 5: Dictionary → Recursion */}
125145
<Link href="tutorial-dictionary" className={getButtonClass(isDictionaryComplete)}>
126146
Dictionary
127147
</Link>
128-
148+
<ArrowBigRight className={getArrowColor(isRecursionComplete)} size={28} />
129149
<Link href="tutorial-recursion" className={getButtonClass(isRecursionComplete)}>
130150
Recursion
131151
</Link>

src/data/quizzes/02-variables.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { QuizData } from "@/lib/types/types";
22

3-
43
export const variablesQuiz: QuizData = {
54
title: "The Artisan's Toolkit - Mastering Variable Vaults",
6-
id: "variables-quest",
5+
id: "variables",
76
questions: [
87
{
98
questionText: "What is the main purpose of a variable in programming?",

0 commit comments

Comments
 (0)