diff --git a/client/src/App.jsx b/client/src/App.jsx
index 15e7c86..0e12aeb 100644
--- a/client/src/App.jsx
+++ b/client/src/App.jsx
@@ -23,6 +23,8 @@ const App = () => {
{false && }
+ } />
+ } />
} />
} />
} />
diff --git a/client/src/auth.css b/client/src/auth.css
new file mode 100644
index 0000000..81beeb8
--- /dev/null
+++ b/client/src/auth.css
@@ -0,0 +1,54 @@
+.auth-container {
+ max-width: 400px;
+ margin: 80px auto;
+ padding: 2rem;
+ background: var(--card-bg, #111);
+ border-radius: 12px;
+ text-align: center;
+}
+
+.auth-form {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.auth-form input {
+ padding: 12px;
+ border-radius: 8px;
+ border: 1px solid #333;
+ background: #000;
+ color: #fff;
+}
+
+.auth-form button {
+ padding: 12px;
+ border-radius: 8px;
+ background: #4f46e5;
+ color: #fff;
+ border: none;
+ cursor: pointer;
+}
+
+.oauth {
+ width: 100%;
+ margin-top: 10px;
+ padding: 10px;
+ border-radius: 8px;
+ border: 1px solid #333;
+ background: transparent;
+ color: #fff;
+}
+
+.oauth.google {
+ border-color: #ea4335;
+}
+
+.oauth.linkedin {
+ border-color: #0a66c2;
+}
+
+.auth-footer {
+ margin-top: 1rem;
+ font-size: 14px;
+}
diff --git a/client/src/main.jsx b/client/src/main.jsx
index d8ed671..4bd2607 100644
--- a/client/src/main.jsx
+++ b/client/src/main.jsx
@@ -1,17 +1,14 @@
-import { StrictMode } from 'react'
-import { createRoot } from 'react-dom/client'
-import './index.css'
-import App from './App.jsx'
-import { BrowserRouter } from 'react-router-dom'
-import { ClerkProvider } from '@clerk/clerk-react'
import React from "react";
-import { ThemeProvider } from "./contexts/ThemeContext";
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import { BrowserRouter } from "react-router-dom";
+import { ClerkProvider } from "@clerk/clerk-react";
-const PUBLISHABLE_KEY = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY;
+import App from "./App.jsx";
+import "./index.css";
+import { ThemeProvider } from "./contexts/ThemeContext";
-if (!PUBLISHABLE_KEY) {
- throw new Error('Add your Clerk Publishable Key to the .env file');
-}
+const clerkKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY;
// 🟢 Apply stored theme BEFORE React renders
const storedTheme = localStorage.getItem("theme");
@@ -19,17 +16,33 @@ if (storedTheme === "dark" || storedTheme === "light") {
document.documentElement.setAttribute("data-theme", storedTheme);
} else {
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
- document.documentElement.setAttribute("data-theme", prefersDark ? "dark" : "light");
+ document.documentElement.setAttribute(
+ "data-theme",
+ prefersDark ? "dark" : "light"
+ );
}
-createRoot(document.getElementById('root')).render(
-
+const Root = () => {
+ const content = (
+
+
+
+ );
+
+ // ✅ Auth enabled only if Clerk key exists
+ return clerkKey ? (
+
+ {content}
+
+ ) : (
+ content
+ );
+};
+
+createRoot(document.getElementById("root")).render(
+
-
-
-
-
-
+
-
+
);
diff --git a/client/src/pages/Login.jsx b/client/src/pages/Login.jsx
new file mode 100644
index 0000000..d1f39c1
--- /dev/null
+++ b/client/src/pages/Login.jsx
@@ -0,0 +1,29 @@
+import React from "react";
+import { Link } from "react-router-dom";
+
+const Login = () => {
+ return (
+
+
Welcome Back
+
Login to continue
+
+
+
+
or
+
+
+
+
+
+ Don’t have an account? Sign up
+
+
+ );
+};
+
+export default Login;
diff --git a/client/src/pages/Signup.jsx b/client/src/pages/Signup.jsx
new file mode 100644
index 0000000..c03a7f7
--- /dev/null
+++ b/client/src/pages/Signup.jsx
@@ -0,0 +1,30 @@
+import React from "react";
+import { Link } from "react-router-dom";
+
+const Signup = () => {
+ return (
+
+
Create Account
+
Sign up to get started
+
+
+
+
or
+
+
+
+
+
+ Already have an account? Login
+
+
+ );
+};
+
+export default Signup;
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..87d0383
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "QuickStay",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}