├── .gitignore
├── frontend
├── README.md
├── .gitignore
├── src
│ ├── images
│ │ ├── expenses.jpg
│ │ ├── expenses1.png
│ │ └── profile_user.jpg
│ ├── components
│ │ ├── user
│ │ │ ├── images
│ │ │ │ ├── fb.png
│ │ │ │ ├── google.png
│ │ │ │ ├── twitter.png
│ │ │ │ └── linkedin.png
│ │ │ ├── Register.js
│ │ │ ├── Login.js
│ │ │ └── user.css
│ │ ├── Layout.js
│ │ ├── home
│ │ │ ├── LogoHeader.js
│ │ │ ├── ExpenseImage.js
│ │ │ ├── CreditFooter.js
│ │ │ ├── home.js
│ │ │ └── home.css
│ │ └── dashboard
│ │ │ ├── dashboard.css
│ │ │ └── dashboard.js
│ ├── App.css
│ ├── index.js
│ └── App.js
├── public
│ └── index.html
└── package.json
├── backend
├── app.js
└── server.js
├── README.md
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/frontend/src/images/expenses.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/images/expenses.jpg
--------------------------------------------------------------------------------
/frontend/src/images/expenses1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/images/expenses1.png
--------------------------------------------------------------------------------
/frontend/src/images/profile_user.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/images/profile_user.jpg
--------------------------------------------------------------------------------
/frontend/src/components/user/images/fb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/components/user/images/fb.png
--------------------------------------------------------------------------------
/frontend/src/components/user/images/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/components/user/images/google.png
--------------------------------------------------------------------------------
/frontend/src/components/user/images/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/components/user/images/twitter.png
--------------------------------------------------------------------------------
/frontend/src/components/user/images/linkedin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/surajaswal29/expense-tracker/HEAD/frontend/src/components/user/images/linkedin.png
--------------------------------------------------------------------------------
/backend/app.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const bodyParser = require("body-parser");
3 |
4 | const app = express();
5 |
6 | module.exports = app;
7 |
--------------------------------------------------------------------------------
/backend/server.js:
--------------------------------------------------------------------------------
1 | const app = require("./app");
2 |
3 | const PORT = "4000";
4 |
5 | app.listen(PORT, () => {
6 | console.log(`server is up and running in port ${PORT}`);
7 | });
8 |
--------------------------------------------------------------------------------
/frontend/src/App.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | box-sizing: border-box;
5 | /* font-family: "Montserrat", sans-serif; */
6 | font-family: "Poppins", sans-serif;
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/components/Layout.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Home from "./home/home";
3 |
4 | const Layout = () => {
5 | return ;
6 | };
7 |
8 | export default Layout;
9 |
--------------------------------------------------------------------------------
/frontend/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App.js";
4 |
5 | const root = document.getElementById("root");
6 | ReactDOM.createRoot(root).render();
7 |
--------------------------------------------------------------------------------
/frontend/src/components/home/LogoHeader.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const LogoHeader = () => {
4 | return (
5 |
8 | );
9 | };
10 |
11 | export default LogoHeader;
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # expenzie
2 |
Expense Tracker Web App
3 |
4 | App Preview => https://expenzie.netlify.app/
5 | Application Status => Under Development ⚙
6 |
7 | 
8 |
--------------------------------------------------------------------------------
/frontend/src/components/home/ExpenseImage.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const ExpenseImage = ({ image }) => {
4 | return (
5 |
6 |

7 |
8 | );
9 | };
10 |
11 | export default ExpenseImage;
12 |
--------------------------------------------------------------------------------
/frontend/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Expenzie | Track your expenses
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/frontend/src/components/home/CreditFooter.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const creditFooter = () => {
4 | return (
5 |
15 | );
16 | };
17 |
18 | export default creditFooter;
19 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "expenzie",
3 | "version": "1.0.0",
4 | "description": "Expense Tracker App",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "node backend/server.js",
9 | "dev": "nodemon backend/server.js"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/surajaswal29/expenzie.git"
14 | },
15 | "author": "Suraj Aswal",
16 | "license": "ISC",
17 | "bugs": {
18 | "url": "https://github.com/surajaswal29/expenzie/issues"
19 | },
20 | "homepage": "https://github.com/surajaswal29/expenzie#readme",
21 | "dependencies": {
22 | "body-parser": "^1.20.1",
23 | "express": "^4.18.2",
24 | "mongoose": "^6.8.3",
25 | "nodemailer": "^6.9.0"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/frontend/src/App.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | // Bootstrap file
4 | import "bootstrap/dist/css/bootstrap.min.css";
5 |
6 | // react router
7 | import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
8 |
9 | // component imports
10 | import Layout from "./components/Layout.js";
11 | import Login from "./components/user/Login.js";
12 | import Register from "./components/user/Register.js";
13 | import Dashboard from "./components/dashboard/dashboard";
14 |
15 | // css file
16 | import "./App.css";
17 |
18 | const App = () => {
19 | return (
20 |
21 |
22 | } />
23 | } />
24 | } />
25 | } />
26 |
27 |
28 | );
29 | };
30 |
31 | export default App;
32 |
--------------------------------------------------------------------------------
/frontend/src/components/dashboard/dashboard.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fff;
3 | }
4 | .profile-box {
5 | padding: 40px;
6 | background-color: #e9e5e5;
7 | position: relative;
8 | border-radius: 10px;
9 | height: 150px;
10 | }
11 | .profile-icon {
12 | width: 70px;
13 | height: 70px;
14 | overflow: hidden;
15 | border-radius: 50%;
16 | border: 3px solid #9c9a9a;
17 | position: absolute;
18 | transform: translate(100%, -100%);
19 | }
20 | .profile-icon img {
21 | height: 100%;
22 | width: 100%;
23 | }
24 | .profile-box p {
25 | font-size: 14px;
26 | }
27 | .dashboard-time-display {
28 | padding: 30px;
29 | background: #000;
30 | height: 150px;
31 | }
32 | .dashboard-time-display h1 {
33 | color: #fff;
34 | }
35 | .dashboard-time-display h4 {
36 | color: #9c9c9c;
37 | }
38 | .dashboard-time-display span {
39 | position: fixed;
40 | }
41 | .total-money-box {
42 | padding: 30px;
43 | background-color: #e9e5e5;
44 | border-radius: 10px;
45 | height: 150px;
46 | }
47 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "expenzie",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@testing-library/jest-dom": "^5.16.5",
7 | "@testing-library/react": "^13.4.0",
8 | "@testing-library/user-event": "^13.5.0",
9 | "bootstrap": "^5.2.3",
10 | "react": "^18.2.0",
11 | "react-bootstrap": "^2.7.0",
12 | "react-dom": "^18.2.0",
13 | "react-router": "^6.6.2",
14 | "react-router-dom": "^6.6.2",
15 | "react-scripts": "^5.0.1",
16 | "web-vitals": "^2.1.4"
17 | },
18 | "scripts": {
19 | "start": "react-scripts start",
20 | "build": "react-scripts build",
21 | "test": "react-scripts test",
22 | "eject": "react-scripts eject"
23 | },
24 | "eslintConfig": {
25 | "extends": [
26 | "react-app",
27 | "react-app/jest"
28 | ]
29 | },
30 | "browserslist": {
31 | "production": [
32 | ">0.2%",
33 | "not dead",
34 | "not op_mini all"
35 | ],
36 | "development": [
37 | "last 1 chrome version",
38 | "last 1 firefox version",
39 | "last 1 safari version"
40 | ]
41 | },
42 | "proxy": "http://localhost:4000"
43 | }
44 |
--------------------------------------------------------------------------------
/frontend/src/components/home/home.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | // Main Image
4 | import expenses from "../../images/expenses1.png"; //banner image
5 | //Header Logo
6 | import LogoHeader from "./LogoHeader";
7 | //Credit Footer
8 | import CreditFooter from "./CreditFooter";
9 | //expense image
10 | import ExpenseImage from "./ExpenseImage";
11 |
12 | // React Router DOM
13 | import { Link } from "react-router-dom";
14 |
15 | // css file
16 | import "./home.css";
17 |
18 | const Home = () => {
19 | return (
20 |
21 |
22 |
23 |
24 |
25 |
26 |
35 |
36 |
Manage Your Expenses
37 | Expenzie - An Expense Tracker App
38 |
39 |
40 |
41 |
42 |
43 | );
44 | };
45 |
46 | export default Home;
47 |
--------------------------------------------------------------------------------
/frontend/src/components/home/home.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@200;300;400;500;600&family=Poppins:wght@200;300;400&display=swap");
2 | * {
3 | padding: 0;
4 | margin: 0;
5 | box-sizing: border-box;
6 | /* font-family: "Montserrat", sans-serif; */
7 | font-family: "Poppins", sans-serif;
8 | }
9 | .main-container {
10 | height: 100vh;
11 | width: 100%;
12 | font-family: "Poppins", sans-serif;
13 | background-color: hsl(208, 100%, 97%);
14 | }
15 | .logo-header {
16 | background-color: black;
17 | padding: 5px;
18 | }
19 | .logo-header h1 {
20 | color: #fff;
21 | font-weight: 300;
22 | text-align: center;
23 | }
24 | .sub-container {
25 | display: flex;
26 | width: 100vw;
27 | padding: 20px 40px;
28 | }
29 | .sub-container .img-container {
30 | width: 40%;
31 | }
32 | .img-container img {
33 | width: 100%;
34 | height: 100%;
35 | }
36 | .app-heading {
37 | width: 60%;
38 | padding: 1rem;
39 | /* border: 1px solid #000; */
40 | text-align: end;
41 | }
42 | .app-heading h1 {
43 | line-height: 1.3;
44 | /* text-shadow: 2px -2px 30px rgba(75, 207, 14, 0.603); */
45 | font-size: 6rem;
46 | margin: 0;
47 | margin-top: 2.5rem;
48 | font-weight: 400;
49 | }
50 | .app-heading *::selection {
51 | background-color: rgb(151, 245, 193);
52 | }
53 | .user-account-buttons {
54 | display: flex;
55 | justify-content: flex-end;
56 | }
57 | .user-account-buttons button {
58 | border: none;
59 | cursor: pointer;
60 | margin: 0 1rem;
61 | font-size: 1rem;
62 | padding: 8px 15px;
63 | border-radius: 5px;
64 | color: #fff;
65 | background: linear-gradient(to right, #2dc653, #4ad66d);
66 | }
67 | .user-account-buttons button:hover {
68 | background: linear-gradient(to right, #25a244, #4ad66d);
69 | }
70 | .app-heading span {
71 | font-size: 30px;
72 | margin-top: 1rem;
73 | display: inline-block;
74 | font-weight: 200;
75 | }
76 | .credit {
77 | display: flex;
78 | justify-content: center;
79 | width: 100%;
80 | font-size: 13px;
81 | color: rgb(39, 38, 38);
82 | position: fixed;
83 | bottom: 1%;
84 | }
85 | @media (max-width: 768px) {
86 | .sub-container {
87 | flex-flow: column-reverse;
88 | }
89 | .sub-container .img-container,
90 | .app-heading {
91 | width: auto;
92 | }
93 | .app-heading h1 {
94 | font-size: 2rem;
95 | }
96 | .app-heading {
97 | text-align: center;
98 | }
99 | .app-heading span {
100 | font-size: 1rem;
101 | }
102 | .user-account-buttons {
103 | justify-content: center;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/frontend/src/components/user/Register.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import LogoHeader from "../home/LogoHeader";
3 |
4 | import { Link } from "react-router-dom";
5 |
6 | // CSS file
7 | import "./user.css";
8 |
9 | // // images
10 | // import Facebook from "./images/fb.png";
11 | // import Google from "./images/google.png";
12 | // import Linkedin from "./images/linkedin.png";
13 | // import Twitter from "./images/twitter.png";
14 |
15 | const Register = () => {
16 | const [uname, setUname] = useState("");
17 | const [email, setEmail] = useState("");
18 | const [password, setPassword] = useState("");
19 |
20 | const registerHandler = (e) => {
21 | e.preventDefault();
22 | console.log(uname, email, password);
23 | const myData = new FormData();
24 |
25 | myData.set("uname", uname);
26 | myData.set("email", email);
27 | myData.set("password", password);
28 |
29 | const userData = [...myData];
30 | console.log(userData);
31 | localStorage.setItem("userData", JSON.stringify(userData));
32 |
33 | alert("user registered");
34 | };
35 |
36 | return (
37 | <>
38 |
39 |
40 |
Create an account
41 |
80 |
81 | Already had an account?
82 | Login
83 |
84 |
85 | >
86 | );
87 | };
88 |
89 | export default Register;
90 |
--------------------------------------------------------------------------------
/frontend/src/components/dashboard/dashboard.js:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from "react";
2 | import LogoHeader from "../home/LogoHeader";
3 |
4 | import ProfileImage from "../../images/profile_user.jpg";
5 |
6 | import "./dashboard.css";
7 |
8 | const Dashboard = () => {
9 | const date = new Date();
10 | const [currentSecond, setCurrentSecond] = useState();
11 |
12 | const currentHour = date.getHours();
13 | const currentMin = date.getMinutes();
14 |
15 | const weekDay = [
16 | "Sunday",
17 | "Monday",
18 | "Tuesday",
19 | "Wednesday",
20 | "Thursday",
21 | "Friday",
22 | "Saturday",
23 | ];
24 |
25 | const month = [
26 | "January",
27 | "February",
28 | "March",
29 | "April",
30 | "May",
31 | "June",
32 | "July",
33 | "August",
34 | "September",
35 | "October",
36 | "November",
37 | "December",
38 | ];
39 |
40 | useEffect(() => {
41 | const perSecondDisplay = setInterval(() => {
42 | setCurrentSecond(date.getSeconds());
43 | }, 1000);
44 |
45 | return () => clearInterval(perSecondDisplay);
46 | });
47 |
48 | const moneySpent = 4000;
49 |
50 | const hourFormat = 12;
51 | let hour = 0;
52 |
53 | if (currentHour > 12) {
54 | hour = hour + (currentHour % hourFormat);
55 | } else {
56 | hour += currentHour;
57 | }
58 |
59 | return (
60 | <>
61 |
62 |
63 |
64 |
65 |
66 |
67 |

68 |
69 |
Suraj Udai Aswal
70 |
Student
71 |
72 |
73 |
74 |
75 |
76 | {`${hour < 10 ? "0" + hour : hour}:${currentMin}:${
77 | currentSecond < 10 ? "0" + currentSecond : currentSecond
78 | }`}
79 | {currentHour > 12 ? "PM" : "AM"}
80 |
81 | {`${weekDay[date.getDay()]}, ${
82 | month[date.getMonth()]
83 | } ${date.getDate()}, ${date.getFullYear()}`}
84 |
85 |
86 |
87 |
88 |
Total Money Spent
89 |
90 | {moneySpent.toLocaleString("en-IN", {
91 | style: "currency",
92 | currency: "INR",
93 | })}
94 |
95 |
96 |
97 |
98 |
99 | >
100 | );
101 | };
102 |
103 | export default Dashboard;
104 |
--------------------------------------------------------------------------------
/frontend/src/components/user/Login.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import LogoHeader from "../home/LogoHeader";
3 |
4 | import { Link, useNavigate } from "react-router-dom";
5 |
6 | // CSS file
7 | import "./user.css";
8 |
9 | // images
10 | // import Facebook from "./images/fb.png";
11 | // import Google from "./images/google.png";
12 | // import Linkedin from "./images/linkedin.png";
13 | // import Twitter from "./images/twitter.png";
14 |
15 | const Login = () => {
16 | const navigate = useNavigate();
17 |
18 | const userData = JSON.parse(localStorage.getItem("userData"));
19 | console.log(userData[0][1]);
20 |
21 | // const demoEmail = "chrispine@gmail.com";
22 | // const demoPassword = "Abc@123";
23 |
24 | const [email, setEmail] = useState("");
25 | const [password, setPassword] = useState("");
26 |
27 | console.log(email, password);
28 | const loginHandler = (e) => {
29 | e.preventDefault();
30 |
31 | if (email === userData[1][1] && password === userData[2][1]) {
32 | navigate("/dashboard");
33 | } else {
34 | alert("Incorrect email or password");
35 | }
36 | };
37 |
38 | // useEffect(() => {
39 | // console.log(errorMsg);
40 | // }, [errorMsg]);
41 |
42 | return (
43 | <>
44 |
45 |
46 |
Login to your account
47 |
85 | {/*
or sign in with
86 |
87 |
88 |

89 |
90 |
91 |

92 |
93 |
94 |

95 |
96 |
97 |

98 |
99 |
*/}
100 |
101 | New to Expenzie?
102 | Create an account
103 |
104 |
105 | >
106 | );
107 | };
108 |
109 | export default Login;
110 |
--------------------------------------------------------------------------------
/frontend/src/components/user/user.css:
--------------------------------------------------------------------------------
1 | /* Login CSS */
2 | *::selection {
3 | background-color: #c7c9ca;
4 | }
5 | body {
6 | background-color: #ecf0f3;
7 | margin: 0px;
8 | padding: 0px;
9 | }
10 | .box {
11 | margin: auto;
12 | box-sizing: border-box;
13 | margin-top: 50px;
14 | padding: 40px 30px;
15 | width: 340px;
16 | border-radius: 15px;
17 | background-color: #ecf0f3;
18 | box-shadow: -8px -8px 8px #feffff, 8px 8px 8px #161b1d2f;
19 | /* box-shadow: -5px -5px 5px #feffff, 5px 5px 5px #161b1d2f; */
20 | /* box-shadow: inset 5px 5px 5px #cbced1,
21 | inset -5px -5px 5px #ffffff; */
22 | }
23 | /* .box:hover{
24 | box-shadow: inset 5px 5px 5px #cbced1,
25 | inset -5px -5px 5px #ffffff;
26 | } */
27 | .box .login-heading {
28 | font-size: 22px;
29 | display: block;
30 | margin-bottom: 10px;
31 | color: #535658;
32 | }
33 | .box label {
34 | font-size: 14px;
35 | font-weight: 500;
36 | color: #858686;
37 | margin-top: 10px;
38 | /* margin-bottom: 10px; */
39 | }
40 | .box .input-box {
41 | width: 100%;
42 | /* height: 35px; */
43 | padding: 6px 12px;
44 | border: none;
45 | color: #858686;
46 | margin-top: 5px;
47 | margin-bottom: 10px;
48 | background-color: #ecf0f3;
49 | outline: none;
50 | border-radius: 5px;
51 | box-shadow: inset 5px 5px 5px #cbced1, inset -5px -5px 5px #ffffff;
52 | }
53 | .box .input-box::placeholder {
54 | color: #9ea0a0;
55 | font-size: 12px;
56 | }
57 | .error span {
58 | font-size: 12px;
59 | display: block;
60 | text-align: center;
61 | color: rgb(235, 69, 69);
62 | }
63 | .forget {
64 | margin-top: 2px;
65 | }
66 | .forget .fg a {
67 | text-decoration: none;
68 | font-size: 13px;
69 | color: #8f8c8c;
70 | line-height: 20px;
71 | }
72 | .forget .fg {
73 | display: inline-block;
74 | margin-left: 58%;
75 | font-size: 12px;
76 | }
77 | .forget .fg:hover {
78 | text-decoration: underline;
79 | text-decoration-color: #b4b8b8;
80 | }
81 | .forget .checkbox-label {
82 | display: block;
83 | position: relative;
84 | cursor: pointer;
85 | font-size: 22px;
86 | line-height: 22px;
87 | }
88 | .label-text {
89 | color: #8f8c8c;
90 | display: inline-block;
91 | /* width: 100%; */
92 | position: absolute;
93 | font-weight: 500;
94 | left: 12%;
95 | font-size: 13px;
96 | }
97 | .forget .checkbox-label input {
98 | position: absolute;
99 | opacity: 0;
100 | cursor: pointer;
101 | }
102 | .create-account-box {
103 | font-size: 12px;
104 | color: #282829;
105 | text-align: center;
106 | margin-top: 5px;
107 | }
108 | .create-account-box a {
109 | font-size: 12px;
110 | color: #34345a;
111 | }
112 | .reg-cab {
113 | margin-top: 10px;
114 | }
115 | .checkbox-label .checkbox-custom {
116 | position: absolute;
117 | top: 0;
118 | left: 0px;
119 | height: 20px;
120 | width: 20px;
121 | background-color: #ecf0f3;
122 | border-radius: 5px;
123 | border: none;
124 | box-shadow: inset 3px 3px 3px #cbced1, inset -3px -3px 3px #ffff;
125 | }
126 | .checkbox-label input:checked ~ .checkbox-custom {
127 | background-color: #ecf0f3;
128 | border-radius: 5px;
129 | -webkit-transform: rotate(0deg) scale(1);
130 | -ms-transform: rotate(0deg) scale(1);
131 | transform: rotate(0deg) scale(1);
132 | opacity: 1;
133 | border: none;
134 | box-shadow: -4px -4px 4px #feffff, 4px 4px 4px #161b1d2f;
135 | }
136 | .checkbox-label .checkbox-custom::after {
137 | position: absolute;
138 | content: "";
139 | left: 10px;
140 | top: 10px;
141 | height: 0px;
142 | width: 0px;
143 | border-radius: 5px;
144 | border: solid #635f5f;
145 | border-width: 0 3px 3px 0;
146 | -webkit-transform: rotate(0deg) scale(0);
147 | -ms-transform: rotate(0deg) scale(0);
148 | transform: rotate(0deg) scale(0);
149 | opacity: 1;
150 | transition: all 0.3s ease-out;
151 | }
152 | .checkbox-label input:checked ~ .checkbox-custom::after {
153 | -webkit-transform: rotate(45deg) scale(1);
154 | -ms-transform: rotate(45deg) scale(1);
155 | transform: rotate(45deg) scale(1);
156 | opacity: 1;
157 | left: 7px;
158 | top: 3px;
159 | width: 4px;
160 | height: 8px;
161 | border: solid #635f5f;
162 | border-width: 0 2px 2px 0;
163 | background-color: transparent;
164 | border-radius: 0;
165 | }
166 | .btn {
167 | width: 100%;
168 | margin-top: 15px;
169 | height: 38px;
170 | border: none;
171 | outline: none;
172 | border-radius: 10px;
173 | background-color: #727171;
174 | font-size: 16px;
175 | font-weight: 500;
176 | color: #ffffff;
177 | cursor: pointer;
178 | box-shadow: -5px -5px 8px #d8e2e6, 5px 5px 10px #2c313378;
179 | transition: 0.8s;
180 | }
181 | .btn:hover {
182 | background-color: #535658;
183 | box-shadow: inset 5px 5px 10px #05050578, inset -5px -5px 10px #9e9c9c;
184 | }
185 | .social {
186 | display: flex;
187 | justify-content: center;
188 | margin-top: 14px;
189 | }
190 | .box-radius {
191 | border-radius: 50%;
192 | width: 40px;
193 | display: block;
194 | height: 40px;
195 | margin: 6px;
196 | /* margin-top: 50px; */
197 | background-color: #ecf0f3;
198 | box-shadow: 5px 5px 6px #0d275023, -5px -5px 6px #ffffff;
199 | padding: 11px;
200 | cursor: pointer;
201 | }
202 | .box-radius:hover {
203 | box-shadow: inset 5px 5px 5px #cbced1, inset -5px -5px 5px #ffffff;
204 | }
205 | .box-radius img {
206 | width: 18px;
207 | margin: auto;
208 | height: 18px;
209 | }
210 | .option {
211 | display: block;
212 | margin-top: 20px;
213 | color: #6c6d6d;
214 | text-align: center;
215 | }
216 | /* Register CSS */
217 |
--------------------------------------------------------------------------------