diff --git a/app/page.tsx b/app/page.tsx
index b3437d5..757783a 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,159 +1,5 @@
-"use client";
+import { HomePage } from "@/components/views/Home/HomePage";
-import { useEffect, useState } from "react";
-import { Navbar } from "@/components/views/Home/Navbar";
-import { Hero } from "@/components/views/Home/Hero";
-import { Features } from "@/components/views/Home/Features";
-import { HowItWorks } from "@/components/views/Home/HowItWorks";
-import { Stats } from "@/components/views/Home/Stats";
-import { Footer } from "@/components/views/Home/Footer";
-import { Sparkles } from "lucide-react";
-
-//Loading Screen
-function LoadingScreen({ onComplete }: { onComplete: () => void }) {
- const [progress, setProgress] = useState(0);
-
- useEffect(() => {
- const interval = setInterval(() => {
- setProgress((prev) => {
- if (prev >= 100) {
- clearInterval(interval);
- setTimeout(onComplete, 300);
- return 100;
- }
- return prev + Math.random() * 15;
- });
- }, 100);
-
- return () => clearInterval(interval);
- }, [onComplete]);
-
- return (
-
-
-
-
- Smart-Admin Copilot
-
-
-
-
-
- Loading amazing experience...
-
-
- );
-}
-
-//Scroll Progress
-function ScrollProgressBar() {
- const [progress, setProgress] = useState(0);
-
- useEffect(() => {
- const handleScroll = () => {
- const scrollTop = window.scrollY;
- const docHeight =
- document.documentElement.scrollHeight - window.innerHeight;
- const scrollPercent = (scrollTop / docHeight) * 100;
- setProgress(scrollPercent);
- };
-
- window.addEventListener("scroll", handleScroll, { passive: true });
- return () => window.removeEventListener("scroll", handleScroll);
- }, []);
-
- return (
-
- );
-}
-
-//Back To Top
-function BackToTop() {
- const [isVisible, setIsVisible] = useState(false);
-
- useEffect(() => {
- const handleScroll = () => {
- setIsVisible(window.scrollY > 500);
- };
-
- window.addEventListener("scroll", handleScroll, { passive: true });
- return () => window.removeEventListener("scroll", handleScroll);
- }, []);
-
- const scrollToTop = () => {
- window.scrollTo({ top: 0, behavior: "smooth" });
- };
-
- return (
-
- );
-}
-
-//Main Page
export default function Home() {
- const [isLoading, setIsLoading] = useState(true);
-
- const handleLoadingComplete = () => {
- setIsLoading(false);
- };
-
- if (isLoading) {
- return ;
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
+ return ;
}
diff --git a/components/views/Home/HomePage.tsx b/components/views/Home/HomePage.tsx
new file mode 100644
index 0000000..9435c6c
--- /dev/null
+++ b/components/views/Home/HomePage.tsx
@@ -0,0 +1,155 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { Navbar } from "@/components/views/Home/Navbar";
+import { Hero } from "@/components/views/Home/Hero";
+import { Features } from "@/components/views/Home/Features";
+import { HowItWorks } from "@/components/views/Home/HowItWorks";
+import { Stats } from "@/components/views/Home/Stats";
+import { Footer } from "@/components/views/Home/Footer";
+import { Sparkles } from "lucide-react";
+
+function LoadingScreen({ onComplete }: { onComplete: () => void }) {
+ const [progress, setProgress] = useState(0);
+
+ useEffect(() => {
+ const interval = setInterval(() => {
+ setProgress((prev) => {
+ if (prev >= 100) {
+ clearInterval(interval);
+ setTimeout(onComplete, 300);
+ return 100;
+ }
+ return prev + Math.random() * 15;
+ });
+ }, 100);
+
+ return () => clearInterval(interval);
+ }, [onComplete]);
+
+ return (
+
+
+
+
+ Smart-Admin Copilot
+
+
+
+
+
+ Loading amazing experience...
+
+
+ );
+}
+
+function ScrollProgressBar() {
+ const [progress, setProgress] = useState(0);
+
+ useEffect(() => {
+ const handleScroll = () => {
+ const scrollTop = window.scrollY;
+ const docHeight =
+ document.documentElement.scrollHeight - window.innerHeight;
+ const scrollPercent = (scrollTop / docHeight) * 100;
+ setProgress(scrollPercent);
+ };
+
+ window.addEventListener("scroll", handleScroll, { passive: true });
+ return () => window.removeEventListener("scroll", handleScroll);
+ }, []);
+
+ return (
+
+ );
+}
+
+function BackToTop() {
+ const [isVisible, setIsVisible] = useState(false);
+
+ useEffect(() => {
+ const handleScroll = () => {
+ setIsVisible(window.scrollY > 500);
+ };
+
+ window.addEventListener("scroll", handleScroll, { passive: true });
+ return () => window.removeEventListener("scroll", handleScroll);
+ }, []);
+
+ const scrollToTop = () => {
+ window.scrollTo({ top: 0, behavior: "smooth" });
+ };
+
+ return (
+
+ );
+}
+
+export function HomePage() {
+ const [isLoading, setIsLoading] = useState(true);
+
+ const handleLoadingComplete = () => {
+ setIsLoading(false);
+ };
+
+ if (isLoading) {
+ return ;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/hooks/useScrollAnimation.ts b/hooks/useScrollAnimation.ts
index 46a93d6..5dd3c55 100644
--- a/hooks/useScrollAnimation.ts
+++ b/hooks/useScrollAnimation.ts
@@ -55,77 +55,3 @@ export function useScrollAnimation(
reset,
};
}
-
-export function useCountUp(
- end: number,
- duration: number = 2000,
- start: number = 0,
-) {
- const [count, setCount] = useState(start);
- const [isAnimating, setIsAnimating] = useState(false);
- const countRef = useRef(start);
-
- const startAnimation = useCallback(() => {
- if (isAnimating) return;
-
- setIsAnimating(true);
- const startTime = Date.now();
- const range = end - start;
-
- const animate = () => {
- const elapsed = Date.now() - startTime;
- const progress = Math.min(elapsed / duration, 1);
-
- const easeOut = 1 - Math.pow(1 - progress, 3);
- const currentCount = Math.floor(start + range * easeOut);
-
- countRef.current = currentCount;
- setCount(currentCount);
-
- if (progress < 1) {
- requestAnimationFrame(animate);
- } else {
- setCount(end);
- setIsAnimating(false);
- }
- };
-
- requestAnimationFrame(animate);
- }, [end, duration, start, isAnimating]);
-
- const reset = useCallback(() => {
- setCount(start);
- setIsAnimating(false);
- }, [start]);
-
- return { count, startAnimation, reset, isAnimating };
-}
-
-export function useParallax(speed: number = 0.5) {
- const ref = useRef(null);
- const [offset, setOffset] = useState(0);
-
- useEffect(() => {
- if (typeof window === "undefined") return;
-
- const handleScroll = () => {
- if (!ref.current) return;
-
- const rect = ref.current.getBoundingClientRect();
- const scrolled = window.scrollY;
- const elementTop = rect.top + scrolled;
- const relativeScroll = scrolled - elementTop + window.innerHeight;
-
- setOffset(relativeScroll * speed * 0.1);
- };
-
- window.addEventListener("scroll", handleScroll, { passive: true });
- handleScroll();
-
- return () => {
- window.removeEventListener("scroll", handleScroll);
- };
- }, [speed]);
-
- return { ref, offset };
-}
diff --git a/hooks/useTheme.ts b/hooks/useTheme.ts
index f8ce3b6..111396c 100644
--- a/hooks/useTheme.ts
+++ b/hooks/useTheme.ts
@@ -1,11 +1,11 @@
"use client";
-import { useState } from "react";
+import { useEffect, useState } from "react";
import { useTheme as useNextTheme } from "next-themes";
export function useTheme() {
const { theme, resolvedTheme, setTheme } = useNextTheme();
- const [mounted] = useState(true);
+ const [mounted, setMounted] = useState(true);
const currentTheme = resolvedTheme ?? theme ?? "light";
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/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/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