├── .gitignore
├── README.md
├── images
├── desktop.png
└── mobile.png
├── license
├── package-lock.json
├── package.json
├── public
├── favicon.ico
├── index.html
├── logo192.png
├── logo512.png
├── manifest.json
└── robots.txt
├── src
├── App.tsx
├── assets
│ ├── bg.png
│ └── react.svg
├── components
│ ├── CustomInput.tsx
│ ├── CustomInput2.tsx
│ ├── QuestionPage.tsx
│ ├── SigninPage.tsx
│ └── TitleBox.tsx
├── index.css
├── index.tsx
├── layouts
│ └── MainLayout.tsx
└── theme.tsx
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Risponsive Glassmorphism Login Page
2 |
3 |
4 |
5 |
6 | You can use this login page for your project ,furthermore customize it to working in real websites.
7 |
8 |
9 |
10 |
11 |
12 |
Desktop Mode
13 |

14 |
15 |
16 |
17 |
Mobile Mode
18 |

19 |
20 |
21 |
22 |
23 |
24 | Abilities
25 |
26 |
27 | - This is just an UI nothing more, don't expect anything more than just beauty :)
28 |
29 |
30 |
31 |
32 | Language and technologies used in This Project
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | Requirements
47 |
48 | Download and install `NodeJS` from official website nodeJS.org
49 |
50 |
51 |
52 | How To Run
53 |
54 | At first you have to clone the project and open it in `IDE`
55 |
56 |
57 |
58 | Open IDE's terminal and then write `~ npm i` to install dependencies
59 |
60 |
61 |
62 | Then write `~ npm start` and then enter
63 |
64 | Congratulations ,now you can use this page for your beautiful project.
65 |
--------------------------------------------------------------------------------
/images/desktop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/images/desktop.png
--------------------------------------------------------------------------------
/images/mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/images/mobile.png
--------------------------------------------------------------------------------
/license:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Alireza Abedi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "glassmorphism-login-page",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@emotion/react": "^11.10.5",
7 | "@emotion/styled": "^11.10.5",
8 | "@mui/icons-material": "^5.10.16",
9 | "@mui/material": "^5.10.17",
10 | "@testing-library/jest-dom": "^5.16.5",
11 | "@testing-library/react": "^13.4.0",
12 | "@testing-library/user-event": "^13.5.0",
13 | "@types/jest": "^27.5.2",
14 | "@types/node": "^16.18.7",
15 | "@types/react": "^18.0.26",
16 | "@types/react-dom": "^18.0.9",
17 | "firebase": "^9.17.2",
18 | "react": "^18.2.0",
19 | "react-dom": "^18.2.0",
20 | "react-scripts": "5.0.1",
21 | "typescript": "^4.9.4",
22 | "web-vitals": "^2.1.4"
23 | },
24 | "scripts": {
25 | "start": "react-scripts start",
26 | "build": "react-scripts build",
27 | "test": "react-scripts test",
28 | "eject": "react-scripts eject"
29 | },
30 | "eslintConfig": {
31 | "extends": [
32 | "react-app",
33 | "react-app/jest"
34 | ]
35 | },
36 | "browserslist": {
37 | "production": [
38 | ">0.2%",
39 | "not dead",
40 | "not op_mini all"
41 | ],
42 | "development": [
43 | "last 1 chrome version",
44 | "last 1 firefox version",
45 | "last 1 safari version"
46 | ]
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 | Login - Glassmorphism
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/public/logo192.png
--------------------------------------------------------------------------------
/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/public/logo512.png
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { Box } from "@mui/material";
2 | import Grid from "@mui/material/Unstable_Grid2/Grid2";
3 | import SigninPage from "./components/SigninPage";
4 | import TitleBox from "./components/TitleBox";
5 | import MainLayout from "./layouts/MainLayout";
6 |
7 | import QuestionPage from "./components/QuestionPage";
8 |
9 |
10 | const App: React.FC = () => {
11 | return (
12 |
13 |
24 | {/* GRID SYSTEM */}
25 |
26 |
27 |
28 |
29 |
30 | {/* GRID SYSTEM END */}
31 |
32 |
33 | );
34 | };
35 |
36 | export default App;
37 |
--------------------------------------------------------------------------------
/src/assets/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Chloeaaa/careerAI/8457f2bdcd5c42b04a86a692041a47719df88d38/src/assets/bg.png
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/CustomInput.tsx:
--------------------------------------------------------------------------------
1 | import { VisibilityOff } from "@mui/icons-material";
2 | import {
3 | Box,
4 | IconButton,
5 | InputAdornment,
6 | InputBase,
7 | Paper,
8 | Typography,
9 | } from "@mui/material";
10 | import { colors } from "../theme";
11 |
12 | const CustomInput: React.FC<{
13 | isIconActive: boolean;
14 | label: string;
15 | placeholder: string;
16 | }> = ({ isIconActive, label, placeholder }) => {
17 | return (
18 |
25 |
26 |
27 |
28 | {label}
29 |
30 |
31 |
37 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | )}
60 |
61 | />
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | );
74 | };
75 |
76 | export default CustomInput;
77 |
--------------------------------------------------------------------------------
/src/components/CustomInput2.tsx:
--------------------------------------------------------------------------------
1 | import { VisibilityOff } from "@mui/icons-material";
2 | import {
3 | Box,
4 | IconButton,
5 | InputAdornment,
6 | InputBase,
7 | Paper,
8 | Typography,
9 | } from "@mui/material";
10 | import { colors } from "../theme";
11 |
12 | const CustomInput: React.FC<{
13 | isIconActive: boolean;
14 | label: string;
15 | placeholder: string;
16 | }> = ({ isIconActive, label, placeholder }) => {
17 | return (
18 |
25 |
26 |
27 |
28 | {label}
29 |
30 |
31 |
37 |
48 |
77 |
78 | {isIconActive && (
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | )}
89 | >
90 | }
91 | />
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | );
104 | };
105 |
106 | export default CustomInput;
107 |
--------------------------------------------------------------------------------
/src/components/QuestionPage.tsx:
--------------------------------------------------------------------------------
1 | import { Box, Button, Checkbox, colors, Typography } from "@mui/material";
2 | import Grid from "@mui/material/Unstable_Grid2/Grid2";
3 | import React from "react";
4 | import CustomInput from "./CustomInput";
5 | import CustomInput2 from "./CustomInput2";
6 |
7 |
8 | const QuestionPage: React.FC = () => {
9 | return (
10 |
27 |
43 |
44 |
45 | {/* LOGO */}
46 |
59 |
60 | CareerAI
61 |
62 |
63 | {/* LOGO END */}
64 |
65 | {/*
66 | Simplifies connecting, augmenting your career
67 |
68 | */}
69 | {/*
70 |
71 |
72 | Sign in to our ConnectU
73 | */}
74 |
75 |
76 |
77 |
78 | {/* INPUTS */}
79 |
80 |
81 |
86 |
87 |
92 |
93 |
98 | {/* */}
103 | {/* INPUT END */}
104 |
105 |
113 | {/*
114 |
115 | Remember me
116 |
*/}
117 |
124 | {/* Forget password? */}
125 |
126 |
127 |
134 |
135 |
136 |
137 | );
138 | };
139 |
140 | export default QuestionPage;
141 |
--------------------------------------------------------------------------------
/src/components/SigninPage.tsx:
--------------------------------------------------------------------------------
1 | import { Box, Button, Checkbox, colors, Typography } from "@mui/material";
2 | import Grid from "@mui/material/Unstable_Grid2/Grid2";
3 | import React from "react";
4 | import { useCallback } from "react";
5 | import { useNavigate } from "react-router";
6 | import CustomInput from "./CustomInput";
7 | import { BrowserRouter, Route } from 'react-router-dom';
8 |
9 | const SigninPage: React.FC = () => {
10 |
11 | // const navigate = useNavigate();
12 | // console.log(navigate);
13 |
14 | // const gotoQuestion = useCallback(() => {
15 | // navigate("./QuestionPage")
16 | // }, [navigate]);
17 |
18 |
19 |
20 |
21 | return (
22 |
39 |
55 |
56 |
57 | {/* LOGO */}
58 |
71 |
72 | CareerAI
73 |
74 |
75 | {/* LOGO END */}
76 |
77 |
78 | Simplifies connecting, augmenting your career
79 |
80 |
81 |
82 |
83 |
84 | Sign in to our ConnectU
85 |
86 |
87 |
88 | {/* INPUTS */}
89 |
94 |
99 | {/* */}
104 | {/* INPUT END */}
105 |
106 |
114 |
115 |
116 | Remember me
117 |
118 |
125 | Forget password?
126 |
127 |
128 |
136 |
137 |
138 |
139 | );
140 | };
141 |
142 | export default SigninPage;
143 |
--------------------------------------------------------------------------------
/src/components/TitleBox.tsx:
--------------------------------------------------------------------------------
1 | import { Box, Typography } from "@mui/material";
2 | import Grid from "@mui/material/Unstable_Grid2";
3 |
4 | const TitleBox: React.FC = () => {
5 | return (
6 |
7 |
25 |
31 |
32 | Join Our
Community
33 |
34 |
35 | Create Your High-Level Cloud Network Service!
36 |
37 |
38 |
39 |
40 | );
41 | };
42 |
43 | export default TitleBox;
44 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | font-family: roboto, 'sans-serif';
6 | }
7 |
8 | body{
9 | height: 100vh;
10 | }
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App'
4 | import './index.css'
5 |
6 | import { initializeApp } from "firebase/app";
7 | import { getAnalytics } from "firebase/analytics";
8 | import { getFirestore } from 'firebase/firestore';
9 | import { getAuth } from 'firebase/auth';
10 |
11 |
12 | const firebaseConfig = {
13 | apiKey: "AIzaSyChhr07kd1tv_kl5nYTMBachF_QUkmoVA4",
14 | authDomain: "careerai-385fe.firebaseapp.com",
15 | projectId: "careerai-385fe",
16 | storageBucket: "careerai-385fe.appspot.com",
17 | messagingSenderId: "893056502664",
18 | appId: "1:893056502664:web:788b42337be06a1dce883d",
19 | measurementId: "G-D5PD3BY0PF"
20 | };
21 |
22 | // Initialize Firebase
23 | const app = initializeApp(firebaseConfig);
24 | const analytics = getAnalytics(app);
25 |
26 | const auth = getAuth();
27 |
28 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
29 |
30 |
31 |
32 | )
33 |
--------------------------------------------------------------------------------
/src/layouts/MainLayout.tsx:
--------------------------------------------------------------------------------
1 | import { Box, ThemeProvider } from "@mui/material";
2 | import { theme } from "../theme";
3 |
4 | const bgImage = require("../assets/bg.png");
5 |
6 | const MainLayout: React.FC<{ children: JSX.Element | JSX.Element[] }> = ({
7 | children,
8 | }) => {
9 | return (
10 |
11 |
24 | {children}
25 |
26 |
27 | );
28 | };
29 |
30 | export default MainLayout;
31 |
--------------------------------------------------------------------------------
/src/theme.tsx:
--------------------------------------------------------------------------------
1 | import { createTheme } from "@mui/material";
2 |
3 | export const colors = {
4 | green: {
5 | 100: "#d5f5e0",
6 | 200: "#abebc1",
7 | 300: "#81e2a3",
8 | 400: "#57d884",
9 | 500: "#2dce65",
10 | 600: "#24a551",
11 | 700: "#1b7c3d",
12 | 800: "#125228",
13 | 900: "#092914",
14 | },
15 | lightBlue: {
16 | 100: "#d2eafb",
17 | 200: "#a6d5f8",
18 | 300: "#79c0f4",
19 | 400: "#4dabf1",
20 | 500: "#2096ed",
21 | 600: "#1a78be",
22 | 700: "#135a8e",
23 | 800: "#0d3c5f",
24 | 900: "#061e2f",
25 | },
26 | input: {
27 | 100: "#d3d6da",
28 | 200: "#a7aeb5",
29 | 300: "#7b8591",
30 | 400: "#4f5d6c",
31 | 500: "#233447",
32 | 600: "#1c2a39",
33 | 700: "#151f2b",
34 | 800: "#0e151c",
35 | 900: "#070a0e",
36 | },
37 | background: {
38 | 100: "#d2d2d5",
39 | 200: "#a5a5ab",
40 | 300: "#797780",
41 | 400: "#4c4a56",
42 | 500: "#1f1d2c",
43 | 600: "#191723",
44 | 700: "#13111a",
45 | 800: "#0c0c12",
46 | 900: "#060609",
47 | },
48 | };
49 |
50 | export const theme = createTheme({
51 | palette: {
52 | mode: "dark",
53 | primary: {
54 | main: colors.green[500],
55 | },
56 | background: {
57 | default: "#1f1d2c",
58 | },
59 | },
60 | typography: {
61 | fontFamily: ["sans-serif"].join(" "),
62 | },
63 | });
64 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "strict": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "noEmit": true,
21 | "jsx": "react-jsx"
22 | },
23 | "include": [
24 | "src"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------