From dd9691acdc48741e4d29bf0f842a0012660303fd Mon Sep 17 00:00:00 2001 From: S M Fahim Hossen Date: Thu, 25 Sep 2025 10:53:13 +0600 Subject: [PATCH] update --- app/(auth)/forgot-password/page.tsx | 62 -------------- app/(auth)/login/page.tsx | 80 ------------------- app/(auth)/signup/page.tsx | 72 ----------------- app/builder/[site]/cart/page.tsx | 29 +++++++ app/builder/[site]/checkout/page.tsx | 29 +++++++ app/builder/[site]/page.tsx | 35 ++++++++ app/builder/[site]/product/[id]/page.tsx | 29 +++++++ app/builder/[site]/shop/page.tsx | 28 +++++++ app/dashboard/page.tsx | 55 ++++++------- app/globals.css | 25 ------ app/signup/page.tsx | 51 ++++++++++++ app/template-select/page.tsx | 49 ++++++++++++ .../templates/template1/layout/footer.tsx | 9 +++ .../templates/template1/layout/header.tsx | 27 +++++++ components/templates/template1/pages/cart.tsx | 8 ++ .../templates/template1/pages/checkout.tsx | 10 +++ components/templates/template1/pages/home.tsx | 14 ++++ components/templates/template1/pages/index.ts | 6 ++ .../templates/template1/pages/product.tsx | 32 ++++++++ components/templates/template1/pages/shop.tsx | 38 +++++++++ lib/sites.ts | 53 ++++++++++++ lib/template.ts | 17 ++++ lib/users.ts | 15 ++++ tsconfig.json | 8 +- 24 files changed, 511 insertions(+), 270 deletions(-) delete mode 100644 app/(auth)/forgot-password/page.tsx delete mode 100644 app/(auth)/login/page.tsx delete mode 100644 app/(auth)/signup/page.tsx create mode 100644 app/builder/[site]/cart/page.tsx create mode 100644 app/builder/[site]/checkout/page.tsx create mode 100644 app/builder/[site]/page.tsx create mode 100644 app/builder/[site]/product/[id]/page.tsx create mode 100644 app/builder/[site]/shop/page.tsx create mode 100644 app/signup/page.tsx create mode 100644 app/template-select/page.tsx create mode 100644 components/templates/template1/layout/footer.tsx create mode 100644 components/templates/template1/layout/header.tsx create mode 100644 components/templates/template1/pages/cart.tsx create mode 100644 components/templates/template1/pages/checkout.tsx create mode 100644 components/templates/template1/pages/home.tsx create mode 100644 components/templates/template1/pages/index.ts create mode 100644 components/templates/template1/pages/product.tsx create mode 100644 components/templates/template1/pages/shop.tsx create mode 100644 lib/sites.ts create mode 100644 lib/template.ts create mode 100644 lib/users.ts diff --git a/app/(auth)/forgot-password/page.tsx b/app/(auth)/forgot-password/page.tsx deleted file mode 100644 index 7b6e706..0000000 --- a/app/(auth)/forgot-password/page.tsx +++ /dev/null @@ -1,62 +0,0 @@ -"use client"; -import { useState } from "react"; -import { sendPasswordResetEmail } from "firebase/auth"; -import { auth } from "@/lib/firebase"; -import Navbar from "@/components/Navbar"; -import Link from "next/link"; - -export default function ForgotPasswordPage() { - const [email, setEmail] = useState(""); - const [message, setMessage] = useState(""); - const [error, setError] = useState(""); - - const handleReset = async (e: React.FormEvent) => { - e.preventDefault(); - setMessage(""); - setError(""); - - try { - await sendPasswordResetEmail(auth, email); - setMessage("Password reset link sent to your email!"); - } catch (err: any) { - setError(err.message); - } - }; - - return ( - <> - -
-
-

- Forgot Password -

- setEmail(e.target.value)} - /> - - - back to login - - {message &&

{message}

} - {error &&

{error}

} -
-
- - ); -} diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx deleted file mode 100644 index 0a74113..0000000 --- a/app/(auth)/login/page.tsx +++ /dev/null @@ -1,80 +0,0 @@ -"use client"; -import { useState } from "react"; -import { signInWithEmailAndPassword, signInWithPopup } from "firebase/auth"; -import { auth, googleProvider } from "@/lib/firebase"; -import { useRouter } from "next/navigation"; -import Navbar from "@/components/Navbar"; - -export default function LoginPage() { - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const router = useRouter(); - - const handleLogin = async (e: React.FormEvent) => { - e.preventDefault(); - try { - await signInWithEmailAndPassword(auth, email, password); - router.push("/dashboard"); - } catch (error: any) { - alert(error.message); - } - }; - - const handleGoogleLogin = async () => { - try { - await signInWithPopup(auth, googleProvider); - router.push("/dashboard"); - } catch (error: any) { - alert(error.message); - } - }; - - return ( - <> - -
-
-

Login

- setEmail(e.target.value)} - /> - setPassword(e.target.value)} - /> - -

- - Forgot Password? - -

- -
-
- - ); -} diff --git a/app/(auth)/signup/page.tsx b/app/(auth)/signup/page.tsx deleted file mode 100644 index 42d4491..0000000 --- a/app/(auth)/signup/page.tsx +++ /dev/null @@ -1,72 +0,0 @@ -"use client"; -import { useState } from "react"; -import { createUserWithEmailAndPassword, signInWithPopup } from "firebase/auth"; -import { auth, googleProvider } from "@/lib/firebase"; -import { useRouter } from "next/navigation"; -import Navbar from "@/components/Navbar"; - -export default function SignupPage() { - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); - const router = useRouter(); - - const handleSignup = async (e: React.FormEvent) => { - e.preventDefault(); - try { - await createUserWithEmailAndPassword(auth, email, password); - router.push("/dashboard"); - } catch (error: any) { - alert(error.message); - } - }; - - const handleGoogleLogin = async () => { - try { - await signInWithPopup(auth, googleProvider); - router.push("/dashboard"); - } catch (error: any) { - alert(error.message); - } - }; - - return ( - <> - -
-
-

Signup

- setEmail(e.target.value)} - /> - setPassword(e.target.value)} - /> - - -
-
- - ); -} diff --git a/app/builder/[site]/cart/page.tsx b/app/builder/[site]/cart/page.tsx new file mode 100644 index 0000000..6061083 --- /dev/null +++ b/app/builder/[site]/cart/page.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { getUserSites } from "@/lib/sites"; +import { templates } from "@/lib/template"; +import { notFound } from "next/navigation"; + +interface CartPageProps { + params: { site: string }; +} + +export default function CartPage({ params }: CartPageProps) { + if (typeof window === "undefined") return null; // SSR safe + const userSites = getUserSites(); + const site = userSites.find((s) => s.slug === params.site); + if (!site) return notFound(); + + const Template = templates[site.template]; + const Header = Template.Header; + const Footer = Template.Footer; + const Cart = Template.pages.Cart; + + return ( + <> +
+ +