diff --git a/public/file.svg b/public/file.svg
deleted file mode 100644
index 004145c..0000000
--- a/public/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/globe.svg b/public/globe.svg
deleted file mode 100644
index 567f17b..0000000
--- a/public/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/onboarding/anon.png b/public/images/onboarding/anon.png
new file mode 100644
index 0000000..bf30cab
Binary files /dev/null and b/public/images/onboarding/anon.png differ
diff --git a/public/images/onboarding/anonymous.svg b/public/images/onboarding/anonymous.svg
deleted file mode 100644
index b591ec6..0000000
--- a/public/images/onboarding/anonymous.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/onboarding/ask-questions.svg b/public/images/onboarding/ask-questions.svg
deleted file mode 100644
index 7564d4a..0000000
--- a/public/images/onboarding/ask-questions.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/onboarding/community-rules.svg b/public/images/onboarding/community-rules.svg
deleted file mode 100644
index 13b7c78..0000000
--- a/public/images/onboarding/community-rules.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/onboarding/join-class.svg b/public/images/onboarding/join-class.svg
deleted file mode 100644
index 76c58e1..0000000
--- a/public/images/onboarding/join-class.svg
+++ /dev/null
@@ -1,35 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/onboarding/kind.png b/public/images/onboarding/kind.png
new file mode 100644
index 0000000..4830578
Binary files /dev/null and b/public/images/onboarding/kind.png differ
diff --git a/public/images/onboarding/onboard-anon.jpg b/public/images/onboarding/onboard-anon.jpg
deleted file mode 100644
index 75e85d1..0000000
Binary files a/public/images/onboarding/onboard-anon.jpg and /dev/null differ
diff --git a/public/images/onboarding/onboard-answers.jpg b/public/images/onboarding/onboard-answers.jpg
deleted file mode 100644
index cb89da5..0000000
Binary files a/public/images/onboarding/onboard-answers.jpg and /dev/null differ
diff --git a/public/images/onboarding/onboard-upvotes.jpg b/public/images/onboarding/onboard-upvotes.jpg
deleted file mode 100644
index 4dc5cda..0000000
Binary files a/public/images/onboarding/onboard-upvotes.jpg and /dev/null differ
diff --git a/public/images/onboarding/onboard-welcome.jpg b/public/images/onboarding/onboard-welcome.jpg
deleted file mode 100644
index ccec97f..0000000
Binary files a/public/images/onboarding/onboard-welcome.jpg and /dev/null differ
diff --git a/public/images/onboarding/question.png b/public/images/onboarding/question.png
new file mode 100644
index 0000000..1f57067
Binary files /dev/null and b/public/images/onboarding/question.png differ
diff --git a/public/images/onboarding/upvote-rank.png b/public/images/onboarding/upvote-rank.png
new file mode 100644
index 0000000..67c9f57
Binary files /dev/null and b/public/images/onboarding/upvote-rank.png differ
diff --git a/public/images/onboarding/upvote.svg b/public/images/onboarding/upvote.svg
deleted file mode 100644
index 476c5af..0000000
--- a/public/images/onboarding/upvote.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
\ No newline at end of file
diff --git a/public/next.svg b/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/placeholder/test_lec.pdf b/public/placeholder/test_lec.pdf
deleted file mode 100644
index a2e8ba5..0000000
Binary files a/public/placeholder/test_lec.pdf and /dev/null differ
diff --git a/public/vercel.svg b/public/vercel.svg
deleted file mode 100644
index 7705396..0000000
--- a/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/window.svg b/public/window.svg
deleted file mode 100644
index b2b2a44..0000000
--- a/public/window.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/app/components/OnboardingCarousel.tsx b/src/app/components/OnboardingCarousel.tsx
index 18287ab..128ff2d 100644
--- a/src/app/components/OnboardingCarousel.tsx
+++ b/src/app/components/OnboardingCarousel.tsx
@@ -1,22 +1,7 @@
"use client";
import { useState } from "react";
-import {
- Check,
- ChevronLeft,
- ChevronRight,
- ShieldCheck,
- LogIn,
- MessageSquarePlus,
- MessageCircleReply,
- Ghost,
- UserCheck,
- ShieldAlert,
- MonitorUp,
- Presentation,
- BookOpen,
- LucideIcon,
-} from "lucide-react";
+import { Check, ChevronLeft, ChevronRight } from "lucide-react";
import { OnboardingStep } from "@/constants/onboarding";
interface OnboardingCarouselProps {
@@ -25,19 +10,6 @@ interface OnboardingCarouselProps {
requireAgreement?: boolean;
}
-const iconMap: Record = {
- LogIn,
- MessageSquarePlus,
- MessageCircleReply,
- Ghost,
- UserCheck,
- ShieldAlert,
- MonitorUp,
- Presentation,
- BookOpen,
- ShieldCheck, // for the community rules
-};
-
export default function OnboardingCarousel({
steps,
onComplete,
@@ -67,51 +39,40 @@ export default function OnboardingCarousel({
const stepData = isAgreementStep
? {
title: "Community Rules",
- icon: "ShieldCheck",
- image: "/images/onboarding/community-rules.svg",
+ image: "/images/onboarding/kind.png",
description: [
- "Post only genuine questions related to the lecture.",
+ "Post only questions related to the lecture.",
"Be respectful toward instructors and peers.",
- "Spam or off-topic posts may be removed.",
+ "Spam or off-topic posts may be removed by TAs.",
],
altText: "Community rules and guidelines",
}
: steps[currentStepIndex];
- const StepIcon = stepData.icon ? iconMap[stepData.icon] : null;
-
- /** Which step index last failed to load a hero image (no effect needed to reset on navigation). */
- const [heroFailedAtIndex, setHeroFailedAtIndex] = useState(null);
-
const heroSrc = "image" in stepData ? stepData.image : undefined;
- const showHeroPhoto = Boolean(heroSrc && heroFailedAtIndex !== currentStepIndex);
return (
-
- {/* Main Container - Responsive Height & Mobile Stacking */}
-
+
+ {/* Fills the viewport — the two halves split it rather than a floating card.
+ Text only on mobile; an even side-by-side split from md up. */}
+
{/* Left Content Half */}
-
-
-
- {/* Flex Row: Icon + Title */}
-
- {StepIcon && (
-
-
-
- )}
-
- {stepData.title}
-
-
+
+
+
+ {/* Centred with auto margins rather than justify-center, which can
+ clip the top of a step that overflows. The fixed min height
+ keeps the heading still as bullet counts change. */}
+
+ {stepData.title}
+
{/* Clean Bullets */}
{stepData.description.map((bullet, idx) => (
-
+
{bullet}
@@ -142,7 +103,7 @@ export default function OnboardingCarousel({
diff --git a/src/app/room/classChat/ChatHeader.tsx b/src/app/room/classChat/ChatHeader.tsx
index 1408316..324267b 100644
--- a/src/app/room/classChat/ChatHeader.tsx
+++ b/src/app/room/classChat/ChatHeader.tsx
@@ -9,6 +9,9 @@ import { SlideUpdateContext } from "../SlideUpdateContext";
import { useRoom } from "../RoomContext";
import type { Role } from "@/utils/types";
+/** Course names are cut to this many characters so the header controls keep their room. */
+const TITLE_MAX_CHARS = 6;
+
interface ChatHeaderProps {
role: Role;
answerMode: "all" | "instructors_only";
@@ -116,8 +119,8 @@ export default function ChatHeader({
)}
{sessionTitle && (
-
- {sessionTitle}
+
+ {sessionTitle.slice(0, TITLE_MAX_CHARS)}
)}
diff --git a/src/constants/onboarding.ts b/src/constants/onboarding.ts
index bddf16c..4bfa127 100644
--- a/src/constants/onboarding.ts
+++ b/src/constants/onboarding.ts
@@ -4,49 +4,36 @@ export interface OnboardingStep {
/** Optional hero image under `public/` (e.g. `/images/onboarding/foo.svg`). */
image?: string;
altText: string;
- icon: string;
}
export const STUDENT_ONBOARDING_STEPS: OnboardingStep[] = [
{
title: "Welcome to AskEasy",
description: [
- "When your professor starts a lecture, it will appear as a live session on your dashboard.",
- 'Just click "Join" on any live lecture to enter the Q&A room.',
+ "Post a question and get answered in real-time during lectures.",
+ "TAs reply directly, so you get answers without disrupting the lecture.",
],
- image: "/images/onboarding/onboard-welcome.jpg",
- altText: "Joining a live lecture session",
- icon: "LogIn",
- },
- {
- title: "Ask & Get Answers Live",
- description: [
- "Post your question during lecture and it appears in the live feed instantly.",
- "TAs and your professor can reply directly, so you get answers without disrupting the lecture.",
- ],
- image: "/images/onboarding/onboard-answers.jpg",
+ image: "/images/onboarding/question.png",
altText: "Live Q&A feed with questions and replies",
- icon: "MessageSquarePlus",
},
{
- title: "Upvote & Track Questions",
+ title: "Upvote Questions",
description: [
- "See a question you also have? Upvote it. The most popular questions rise to the top.",
- "Questions are marked as resolved once answered. Filter between unresolved and resolved to find what you need.",
+ "The most upvoted unresolved questions rise to the top.",
+ "Everyone can mark their own question as resolved.",
+ "Only TAs and professors can mark other people's questions as resolved.",
],
- image: "/images/onboarding/onboard-upvotes.jpg",
+ image: "/images/onboarding/upvote-rank.png",
altText: "Questions ranked by upvotes with resolution filters",
- icon: "MessageCircleReply",
},
{
title: "Stay Anonymous",
description: [
- "Toggle Anonymous Mode to hide your name from other students.",
- "TAs and professors can still see who you are to prevent misuse, but your classmates won't know.",
+ "Toggle Anonymous Mode to hide your name.",
+ "TAs and professors can still find you if misused.",
],
- image: "/images/onboarding/onboard-anon.jpg",
+ image: "/images/onboarding/anon.png",
altText: "Anonymous mode toggle hiding your identity",
- icon: "Ghost",
},
];
@@ -59,7 +46,6 @@ export const PROF_ONBOARDING_STEPS: OnboardingStep[] = [
],
image: "/images/onboarding/onboard-classes.jpg",
altText: "Starting a live session with slides and chat",
- icon: "MonitorUp",
},
{
title: "Engage With Your Class",
@@ -69,7 +55,6 @@ export const PROF_ONBOARDING_STEPS: OnboardingStep[] = [
],
image: "/images/onboarding/onboard-engage.jpg",
altText: "Professor replying to student questions in real time",
- icon: "Presentation",
},
{
title: "Manage & Export",
@@ -79,6 +64,5 @@ export const PROF_ONBOARDING_STEPS: OnboardingStep[] = [
],
image: "/images/onboarding/onboard-end.jpg",
altText: "Session management tools and chat export",
- icon: "BookOpen",
},
];