Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 072c61700a | |||
| 242e6702ff | |||
| 995ab72360 | |||
| 0f0a3c4f03 | |||
| 7ab7e4a451 |
248
src/app/page.tsx
248
src/app/page.tsx
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import ReactLenis from "lenis/react";
|
import ReactLenis from "lenis/react";
|
||||||
|
import { useState, useEffect, useRef } from "react";
|
||||||
import ContactText from '@/components/sections/contact/ContactText';
|
import ContactText from '@/components/sections/contact/ContactText';
|
||||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||||
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
|
import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';
|
||||||
@@ -11,6 +12,31 @@ import MetricCardFourteen from '@/components/sections/metrics/MetricCardFourteen
|
|||||||
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
|
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
|
const [alarmEnabled, setAlarmEnabled] = useState(false);
|
||||||
|
const audioRef = useRef<HTMLAudioElement | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const saved = localStorage.getItem('alarmEnabled');
|
||||||
|
if (saved) {
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(saved);
|
||||||
|
setAlarmEnabled(parsed);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Failed to parse alarm state", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
audioRef.current = new Audio('/alarm-sound.mp3');
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const toggleAlarm = () => {
|
||||||
|
const newState = !alarmEnabled;
|
||||||
|
setAlarmEnabled(newState);
|
||||||
|
localStorage.setItem('alarmEnabled', JSON.stringify(newState));
|
||||||
|
if (newState && audioRef.current) {
|
||||||
|
audioRef.current.play().catch(e => console.log("Playback prevented:", e));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="hover-bubble"
|
defaultButtonVariant="hover-bubble"
|
||||||
@@ -25,146 +51,100 @@ export default function LandingPage() {
|
|||||||
headingFontWeight="semibold"
|
headingFontWeight="semibold"
|
||||||
>
|
>
|
||||||
<ReactLenis root>
|
<ReactLenis root>
|
||||||
<div id="nav" data-section="nav">
|
<div id="nav" data-section="nav">
|
||||||
<NavbarLayoutFloatingInline
|
<NavbarLayoutFloatingInline
|
||||||
navItems={[
|
navItems={[
|
||||||
{
|
{ name: "Home", id: "hero" },
|
||||||
name: "Home", id: "hero"},
|
{ name: "Features", id: "features" },
|
||||||
{
|
{ name: "FAQ", id: "faq" },
|
||||||
name: "Features", id: "features"},
|
]}
|
||||||
{
|
brandName="StudyReminder"
|
||||||
name: "FAQ", id: "faq"},
|
button={{ text: "Get Started", href: "#" }}
|
||||||
]}
|
/>
|
||||||
brandName="StudyReminder"
|
</div>
|
||||||
button={{
|
|
||||||
text: "Log In", href: "#"
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroBillboard
|
<HeroBillboard
|
||||||
background={{
|
background={{ variant: "sparkles-gradient" }}
|
||||||
variant: "sparkles-gradient"}}
|
title="Master Your Study Schedule"
|
||||||
title="Master Your Study Schedule"
|
description="Never miss a study session again. Smart, automated reminders to keep you on track, focused, and ready for every exam."
|
||||||
description="Never miss a study session again. Smart, automated reminders to keep you on track, focused, and ready for every exam."
|
buttons={[
|
||||||
buttons={[
|
{ text: alarmEnabled ? "Alarm ON" : "Enable Alarm", onClick: toggleAlarm },
|
||||||
{
|
]}
|
||||||
text: "Get Started", href: "#"},
|
imageSrc="http://img.b2bpic.net/free-photo/high-angle-bullet-journal-keyboard_23-2149740042.jpg"
|
||||||
]}
|
imageAlt="Digital Study Dashboard"
|
||||||
imageSrc="http://img.b2bpic.net/free-photo/high-angle-bullet-journal-keyboard_23-2149740042.jpg"
|
mediaAnimation="blur-reveal"
|
||||||
imageAlt="Digital Study Dashboard"
|
/>
|
||||||
mediaAnimation="blur-reveal"
|
</div>
|
||||||
avatars={[
|
|
||||||
{
|
|
||||||
src: "http://img.b2bpic.net/free-photo/schedule-time-management-planner-concept_53876-120482.jpg", alt: "Student 1"},
|
|
||||||
{
|
|
||||||
src: "http://img.b2bpic.net/free-photo/young-man-learning-virtual-classroom_23-2149200215.jpg", alt: "Student 2"},
|
|
||||||
{
|
|
||||||
src: "http://img.b2bpic.net/free-photo/light-equipment-grey-technology-serious_1134-1423.jpg", alt: "Student 3"},
|
|
||||||
{
|
|
||||||
src: "http://img.b2bpic.net/free-photo/high-angle-bullet-journal-keyboard_23-2149740042.jpg", alt: "Student 4"},
|
|
||||||
{
|
|
||||||
src: "http://img.b2bpic.net/free-photo/support-community-aid-help-team-assistance-concept_53876-123806.jpg", alt: "Student 5"},
|
|
||||||
]}
|
|
||||||
avatarText="Used by 10,000+ students"
|
|
||||||
marqueeItems={[
|
|
||||||
{
|
|
||||||
type: "text", text: "Productivity Boosted"},
|
|
||||||
{
|
|
||||||
type: "text", text: "Grade Improvement"},
|
|
||||||
{
|
|
||||||
type: "text", text: "Stress Reduced"},
|
|
||||||
{
|
|
||||||
type: "text", text: "Better Scheduling"},
|
|
||||||
{
|
|
||||||
type: "text", text: "Exam Ready"},
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="features" data-section="features">
|
<div id="features" data-section="features">
|
||||||
<FeatureCardSeven
|
<FeatureCardSeven
|
||||||
animationType="slide-up"
|
animationType="slide-up"
|
||||||
textboxLayout="split"
|
textboxLayout="split"
|
||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
features={[
|
features={[
|
||||||
{
|
{ title: "Timely Notifications", description: "Get pinged exactly when you need to start, ensuring no session goes forgotten.", imageSrc: "http://img.b2bpic.net/free-photo/schedule-time-management-planner-concept_53876-120482.jpg", imageAlt: "Reminder Bell" },
|
||||||
title: "Timely Notifications", description: "Get pinged exactly when you need to start, ensuring no session goes forgotten.", imageSrc: "http://img.b2bpic.net/free-photo/schedule-time-management-planner-concept_53876-120482.jpg", imageAlt: "Reminder Bell"},
|
{ title: "Workspace Focus", description: "Tools that help you maintain a dedicated study environment and keep distractions at bay.", imageSrc: "http://img.b2bpic.net/free-photo/young-man-learning-virtual-classroom_23-2149200215.jpg", imageAlt: "Focused Student" },
|
||||||
{
|
{ title: "Smart Scheduling", description: "AI-optimized schedules that adapt to your pace and academic requirements.", imageSrc: "http://img.b2bpic.net/free-photo/light-equipment-grey-technology-serious_1134-1423.jpg", imageAlt: "Schedule Data" },
|
||||||
title: "Workspace Focus", description: "Tools that help you maintain a dedicated study environment and keep distractions at bay.", imageSrc: "http://img.b2bpic.net/free-photo/young-man-learning-virtual-classroom_23-2149200215.jpg", imageAlt: "Focused Student"},
|
]}
|
||||||
{
|
title="Stay Productive, Stay Ahead"
|
||||||
title: "Smart Scheduling", description: "AI-optimized schedules that adapt to your pace and academic requirements.", imageSrc: "http://img.b2bpic.net/free-photo/light-equipment-grey-technology-serious_1134-1423.jpg", imageAlt: "Schedule Data"},
|
description="Powerful tools designed specifically for students to manage their time and workload effectively."
|
||||||
]}
|
/>
|
||||||
title="Stay Productive, Stay Ahead"
|
</div>
|
||||||
description="Powerful tools designed specifically for students to manage their time and workload effectively."
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="faq" data-section="faq">
|
<div id="faq" data-section="faq">
|
||||||
<FaqSplitMedia
|
<FaqSplitMedia
|
||||||
textboxLayout="default"
|
textboxLayout="default"
|
||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
faqs={[
|
faqs={[
|
||||||
{
|
{ id: "f1", title: "How do I set a reminder?", content: "Simply input your subject name and the date/time you plan to study in the add-reminder form." },
|
||||||
id: "f1", title: "How do I set a reminder?", content: "Simply input your subject name and the date/time you plan to study in the add-reminder form."},
|
{ id: "f2", title: "Can I delete a reminder?", content: "Yes, just tap the 'X' button next to the reminder in your list to remove it." },
|
||||||
{
|
{ id: "f3", title: "Do I need an account?", content: "No, your reminders are stored locally in your browser so you can start right away." },
|
||||||
id: "f2", title: "Can I delete a reminder?", content: "Yes, just tap the 'X' button next to the reminder in your list to remove it."},
|
]}
|
||||||
{
|
imageSrc="http://img.b2bpic.net/free-photo/support-community-aid-help-team-assistance-concept_53876-123806.jpg"
|
||||||
id: "f3", title: "Do I need an account?", content: "No, your reminders are stored locally in your browser so you can start right away."},
|
mediaAnimation="slide-up"
|
||||||
]}
|
mediaPosition="right"
|
||||||
imageSrc="http://img.b2bpic.net/free-photo/support-community-aid-help-team-assistance-concept_53876-123806.jpg"
|
title="Common Questions"
|
||||||
mediaAnimation="slide-up"
|
description="Everything you need to know about using our study reminder platform effectively."
|
||||||
mediaPosition="right"
|
faqsAnimation="blur-reveal"
|
||||||
title="Common Questions"
|
imageAlt="FAQ Help Support"
|
||||||
description="Everything you need to know about using our study reminder platform effectively."
|
/>
|
||||||
faqsAnimation="blur-reveal"
|
</div>
|
||||||
imageAlt="FAQ Help Support"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="metric" data-section="metric">
|
<div id="metric" data-section="metric">
|
||||||
<MetricCardFourteen
|
<MetricCardFourteen
|
||||||
useInvertedBackground={false}
|
useInvertedBackground={false}
|
||||||
title="Proven Results"
|
title="Proven Results"
|
||||||
tag="Our Impact"
|
tag="Our Impact"
|
||||||
metrics={[
|
metrics={[
|
||||||
{
|
{ id: "m1", value: "10k+", description: "Happy Students" },
|
||||||
id: "m1", value: "10k+", description: "Happy Students"},
|
{ id: "m2", value: "50k+", description: "Sessions Scheduled" },
|
||||||
{
|
{ id: "m3", value: "95%", description: "Goal Achievement" },
|
||||||
id: "m2", value: "50k+", description: "Sessions Scheduled"},
|
{ id: "m4", value: "24/7", description: "Always Available" },
|
||||||
{
|
]}
|
||||||
id: "m3", value: "95%", description: "Goal Achievement"},
|
metricsAnimation="slide-up"
|
||||||
{
|
/>
|
||||||
id: "m4", value: "24/7", description: "Always Available"},
|
</div>
|
||||||
]}
|
|
||||||
metricsAnimation="slide-up"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="contact" data-section="contact">
|
<div id="contact" data-section="contact">
|
||||||
<ContactText
|
<ContactText
|
||||||
useInvertedBackground={true}
|
useInvertedBackground={true}
|
||||||
background={{
|
background={{ variant: "sparkles-gradient" }}
|
||||||
variant: "sparkles-gradient"}}
|
text="Ready to excel in your studies? Start organizing your schedule now."
|
||||||
text="Ready to excel in your studies? Start organizing your schedule now."
|
buttons={[
|
||||||
buttons={[
|
{ text: "Start Organizing", href: "#" },
|
||||||
{
|
]}
|
||||||
text: "Start Organizing", href: "#"},
|
/>
|
||||||
]}
|
</div>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterLogoReveal
|
<FooterLogoReveal
|
||||||
logoText="StudyReminder"
|
logoText="StudyReminder"
|
||||||
leftLink={{
|
leftLink={{ text: "Privacy Policy", href: "#" }}
|
||||||
text: "Privacy Policy", href: "#"}}
|
rightLink={{ text: "Contact Support", href: "#" }}
|
||||||
rightLink={{
|
/>
|
||||||
text: "Contact Support", href: "#"}}
|
</div>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ReactLenis>
|
</ReactLenis>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user