From 27f6a7777fbc1b44871336624bcf452608db4423 Mon Sep 17 00:00:00 2001 From: Shagun Sharma Date: Tue, 28 Jan 2025 12:33:29 +0530 Subject: [PATCH] fix:changes --- index.html | 2 +- package-lock.json | 70 ++++++++++++++++++++++++++- package.json | 3 +- src/App.css | 42 ---------------- src/App.jsx | 70 +++++++++++++++------------ src/app/store.js | 12 +++++ src/assets/favicon.jpg | Bin 0 -> 58165 bytes src/features/auth/authSlice.js | 28 +++++++++++ src/helper/helper.js | 9 ++++ src/index.css | 68 -------------------------- src/pages/InterviewQuestionsPage.jsx | 8 +++ src/pages/JobDescriptionPage.jsx | 8 +++ src/pages/LoginPage.jsx | 53 ++++++++++++++++++++ src/pages/ResourceInvitePage.jsx | 8 +++ src/theme.js | 49 +++++++++++++++++++ 15 files changed, 285 insertions(+), 145 deletions(-) create mode 100644 src/app/store.js create mode 100644 src/assets/favicon.jpg create mode 100644 src/features/auth/authSlice.js create mode 100644 src/helper/helper.js create mode 100644 src/pages/InterviewQuestionsPage.jsx create mode 100644 src/pages/JobDescriptionPage.jsx create mode 100644 src/pages/LoginPage.jsx create mode 100644 src/pages/ResourceInvitePage.jsx create mode 100644 src/theme.js diff --git a/index.html b/index.html index 0c589ec..7f2abc5 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + Vite + React diff --git a/package-lock.json b/package-lock.json index 64a96e2..3384e4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "axios": "^1.7.9", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-redux": "^9.2.0" + "react-redux": "^9.2.0", + "react-router-dom": "^7.1.3" }, "devDependencies": { "@eslint/js": "^9.17.0", @@ -1721,6 +1722,12 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2282,6 +2289,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -4453,6 +4469,46 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.3.tgz", + "integrity": "sha512-EezYymLY6Guk/zLQ2vRA8WvdUhWFEj5fcE3RfWihhxXBW7+cd1LsIiA3lmx+KCmneAGQuyBv820o44L2+TtkSA==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.3.tgz", + "integrity": "sha512-qQGTE+77hleBzv9SIUIkGRvuFBQGagW+TQKy53UTZAO/3+YFNBYvRsNIZ1GT17yHbc63FylMOdS+m3oUriF1GA==", + "license": "MIT", + "dependencies": { + "react-router": "7.1.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -4680,6 +4736,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -4989,6 +5051,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 20a3a40..e8c9537 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "axios": "^1.7.9", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-redux": "^9.2.0" + "react-redux": "^9.2.0", + "react-router-dom": "^7.1.3" }, "devDependencies": { "@eslint/js": "^9.17.0", diff --git a/src/App.css b/src/App.css index b9d355d..e69de29 100644 --- a/src/App.css +++ b/src/App.css @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.jsx b/src/App.jsx index f67355a..2a7ff79 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,35 +1,41 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' - -function App() { - const [count, setCount] = useState(0) +import React, { useState } from 'react'; +import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; +import { Provider } from 'react-redux'; +import store from './app/store'; +import LoginPage from './pages/LoginPage'; +import JobDescriptionPage from './pages/JobDescriptionPage'; +import InterviewQuestionsPage from './pages/InterviewQuestionsPage'; +import ResourceInvitePage from './pages/ResourceInvitePage'; +import { ThemeProvider, CssBaseline, Button } from '@mui/material'; +import { darkTheme, lightTheme } from './theme'; +const App = () => { + const [darkMode, setDarkMode] = useState(false); + const toggleDarkMode = () => setDarkMode(!darkMode); + return ( - <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

- Edit src/App.jsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ) -} + + + + + + + } /> + } /> + } /> + } /> + } /> + + + + + ); +}; -export default App +export default App; diff --git a/src/app/store.js b/src/app/store.js new file mode 100644 index 0000000..3c23ff5 --- /dev/null +++ b/src/app/store.js @@ -0,0 +1,12 @@ +import { configureStore } from '@reduxjs/toolkit'; +import authReducer from '../features/auth/authSlice'; +// import jobReducer from '../features/job/jobSlice'; + +const store = configureStore({ + reducer: { + auth: authReducer, + // job: jobReducer, + }, +}); + +export default store; diff --git a/src/assets/favicon.jpg b/src/assets/favicon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6056ca3b277d4bd26369b1fafe163c997c8b2b63 GIT binary patch literal 58165 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

Iqg39FW$9yrU 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 YA@XOp<*Ifdl3-T{w?o#B`MdSs07m6qUjP6A literal 0 HcmV?d00001 diff --git a/src/features/auth/authSlice.js b/src/features/auth/authSlice.js new file mode 100644 index 0000000..33ded3a --- /dev/null +++ b/src/features/auth/authSlice.js @@ -0,0 +1,28 @@ +import { createSlice } from '@reduxjs/toolkit'; + +const initialState = { + user: null, + isAuthenticated: false, + error: null, +}; + +const authSlice = createSlice({ + name: 'auth', + initialState, + reducers: { + loginSuccess: (state, action) => { + state.user = action.payload; + state.isAuthenticated = true; + }, + logout: (state) => { + state.user = null; + state.isAuthenticated = false; + }, + setError: (state, action) => { + state.error = action.payload; + }, + }, +}); + +export const { loginSuccess, logout, setError } = authSlice.actions; +export default authSlice.reducer; diff --git a/src/helper/helper.js b/src/helper/helper.js new file mode 100644 index 0000000..995424d --- /dev/null +++ b/src/helper/helper.js @@ -0,0 +1,9 @@ +// src/ +// ├── components/ # Reusable UI components +// ├── features/ # Redux slices and related logic +// ├── pages/ # Page components for routes +// ├── app/ # Redux store setup +// ├── services/ # API calls and services +// ├── utils/ # Utility functions +// ├── App.jsx # Main App component +// └── main.jsx # Entry point \ No newline at end of file diff --git a/src/index.css b/src/index.css index 6119ad9..e69de29 100644 --- a/src/index.css +++ b/src/index.css @@ -1,68 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/src/pages/InterviewQuestionsPage.jsx b/src/pages/InterviewQuestionsPage.jsx new file mode 100644 index 0000000..6a7c7cc --- /dev/null +++ b/src/pages/InterviewQuestionsPage.jsx @@ -0,0 +1,8 @@ +function InterviewQuestionsPage(params) { + return( +

+ InterviewQuestionsPage

+ ) +} + +export default InterviewQuestionsPage \ No newline at end of file diff --git a/src/pages/JobDescriptionPage.jsx b/src/pages/JobDescriptionPage.jsx new file mode 100644 index 0000000..f28fb28 --- /dev/null +++ b/src/pages/JobDescriptionPage.jsx @@ -0,0 +1,8 @@ +function JobDescriptionPage(params) { + return( +

+ JobDescriptionPage

+ ) +} + +export default JobDescriptionPage \ No newline at end of file diff --git a/src/pages/LoginPage.jsx b/src/pages/LoginPage.jsx new file mode 100644 index 0000000..e565ac8 --- /dev/null +++ b/src/pages/LoginPage.jsx @@ -0,0 +1,53 @@ +import React, { useState } from 'react'; +import { useDispatch } from 'react-redux'; +import { loginSuccess, setError } from '../features/auth/authSlice'; +import { Box, Button, TextField, Typography, Alert } from '@mui/material'; + +const LoginPage = () => { + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [error, setErrorState] = useState(null); + const dispatch = useDispatch(); + + const handleLogin = () => { + if (!email || !password) { + setErrorState('Email and Password are required.'); + return; + } + + // Simulate login API call + try { + dispatch(loginSuccess({ email })); // Replace with actual API response + } catch (err) { + dispatch(setError(err.message)); + setErrorState('Invalid credentials.'); + } + }; + + return ( + + Login + {error && {error}} + setEmail(e.target.value)} + /> + setPassword(e.target.value)} + /> + + + ); +}; + +export default LoginPage; \ No newline at end of file diff --git a/src/pages/ResourceInvitePage.jsx b/src/pages/ResourceInvitePage.jsx new file mode 100644 index 0000000..1a17144 --- /dev/null +++ b/src/pages/ResourceInvitePage.jsx @@ -0,0 +1,8 @@ +function ResourceInvitePage(params) { + return( +

+ ResourceInvitePage

+ ) +} + +export default ResourceInvitePage \ No newline at end of file diff --git a/src/theme.js b/src/theme.js new file mode 100644 index 0000000..6219be2 --- /dev/null +++ b/src/theme.js @@ -0,0 +1,49 @@ +import { createTheme } from '@mui/material/styles'; + +const lightTheme = createTheme({ + palette: { + mode: 'light', + primary: { + main: '#2196f3', // Light Blue + }, + secondary: { + main: '#90caf9', // Lighter Blue + }, + background: { + default: '#f5f5f5', // Light Gray + paper: '#ffffff', // White + }, + text: { + primary: '#000000', // Black + secondary: '#555555', // Dark Gray + }, + }, + typography: { + fontFamily: `'Roboto', 'Arial', sans-serif`, + }, +}); + +const darkTheme = createTheme({ + palette: { + mode: 'dark', + primary: { + main: '#2196f3', // Light Blue + }, + secondary: { + main: '#64b5f6', // Slightly Lighter Blue + }, + background: { + default: '#121212', // Black + paper: '#1e1e1e', // Dark Gray + }, + text: { + primary: '#ffffff', // White + secondary: '#bbbbbb', // Light Gray + }, + }, + typography: { + fontFamily: `'Roboto', 'Arial', sans-serif`, + }, +}); + +export { lightTheme, darkTheme };