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": {} +}