diff --git a/.DS_Store b/.DS_Store index 0c69e82..3a7e0e1 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/app.js b/app.js index cb82f65..6932f0b 100644 --- a/app.js +++ b/app.js @@ -2,15 +2,26 @@ require("./database/connection"); const express = require("express"); const app = express(); const usersRoutes = require("./routes/user"); +const therapistsRouter = require("./routes/therapists"); +const cookieParser = require("cookie-parser"); +const sessions = require("express-session"); app.use(express.static("public")); app.set("view engine", "ejs"); app.use(express.json()); - +app.use( + sessions({ + secret: "donttellanyone", + saveUninitialized: true, + cookie: { maxAge: 1000 * 60 * 60 * 24 }, + resave: false, + }) +); +app.use(cookieParser()); // parse incoming post request's body app.use(express.urlencoded({ extended: false })); - app.use("/user", usersRoutes); +app.use("/th", therapistsRouter); app.get("/", function (req, res) { res.render("pages/index"); @@ -21,8 +32,8 @@ app.get("/design", (req, res) => { }); app.use((req, res) => { - res.render("pages/errorPages/404"); + res.render("templates/404"); }); const PORT = process.env.PORT || 3000; -app.listen(PORT, () => console.log(`Listening on ${PORT}`)); +app.listen(PORT, () => console.log(`Listening on ${PORT}`)); \ No newline at end of file diff --git a/database/connection.js b/database/connection.js index 333a136..e77bfea 100644 --- a/database/connection.js +++ b/database/connection.js @@ -6,13 +6,14 @@ let connectionUrl = ""; //is the app app on production or development? if (process.env.ENVIRONMENT === "development") { connectionUrl = "mongodb://localhost:27017/consuelo"; + } else { //environment variables needed for connection const username = process.env.DB_USERNAME; const password = process.env.DB_PASSWORD; const cluster = process.env.CLUSTER; const dbname = process.env.DB_NAME; - connectionUrl = `mongodb://${username}:${password}@${cluster}.mongodb.net:27017,ac-iiwqc6d-shard-00-01.ntnbdr7.mongodb.net:27017,ac-iiwqc6d-shard-00-02.ntnbdr7.mongodb.net:27017/${dbname}?ssl=true&replicaSet=atlas-sgkixf-shard-0&authSource=admin&retryWrites=true&w=majority`; + connectionUrl = `mongodb+srv://${username}:${password}@${cluster}.mongodb.net/${dbname}?retryWrites=true&w=majority` } mongoose.connect(connectionUrl, (error) => { diff --git a/database/models.js b/database/models.js index 06a86c1..ae3bcaf 100644 --- a/database/models.js +++ b/database/models.js @@ -9,6 +9,8 @@ const userSchema = new mongoose.Schema({ verified: { type: Boolean, default: false }, //an array of saved affirmation cards ID savedCardsId: [{ type: String }], + profileImageUrl: { type: String, default: "default-image" }, + notifications: [{ read: { type: Boolean, default: false }, content: String }], }); const affirmationSchema = new mongoose.Schema({ @@ -22,15 +24,43 @@ const mentalHealthTipSchema = new mongoose.Schema({ description: String, }); +const forumSchema = new mongoose.Schema({ + author: String, + datePosted: Date, + content: String, + likes: { type: Number, default: 0 }, + comments: { type: Number, default: 0 }, +}); + +const forumCommentSchema = new mongoose.Schema({ + postID: String, + authorID: String, + comment: String, +}); + +const blogSchema = new mongoose.Schema({ + title: String, + datePosted: Date, + readTime: String, + author: String, + content: String, +}); + const User = mongoose.model("User", userSchema); const Affirmation = mongoose.model("Affirmation", affirmationSchema); -const MentalHealthTips = mongoose.model( +const MentalHealthTip = mongoose.model( "Mental Health Tip", mentalHealthTipSchema ); +const forum = mongoose.model("Forum", forumSchema); +const forumComment = mongoose.model("Forum comments", forumCommentSchema); +const blog = mongoose.model("blog", blogSchema); module.exports = { User, Affirmation, - MentalHealthTips, + MentalHealthTip, + forum, + forumComment, + blog, }; diff --git a/load.env b/load.env new file mode 100644 index 0000000..1b8ea04 --- /dev/null +++ b/load.env @@ -0,0 +1,5 @@ +DB_USERNAME="dev" +DB_PASSWORD="dev" +CLUSTER="cluster1.8bih7o7" +DB_NAME="consuelo-test" +ENVIRONMENT="" diff --git a/package-lock.json b/package-lock.json index 1aa06c5..3268f71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,13 @@ "license": "ISC", "dependencies": { "bcrypt": "^5.1.0", + "cookie-parser": "^1.4.6", "dotenv": "^16.0.3", "ejs": "^3.1.8", "express": "^4.18.2", - "mongoose": "^6.7.0" + "express-session": "^1.17.3", + "mongoose": "^6.7.0", + "nodemon": "^2.0.20" }, "devDependencies": { "autoprefixer": "^10.4.12", @@ -1197,7 +1200,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1313,7 +1315,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -1360,7 +1361,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1494,7 +1494,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -1521,7 +1520,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1598,6 +1596,26 @@ "node": ">= 0.6" } }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -1808,6 +1826,32 @@ "node": ">= 0.10.0" } }, + "node_modules/express-session": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "dependencies": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -1892,7 +1936,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1966,7 +2009,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -2157,6 +2199,11 @@ } ] }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2188,7 +2235,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2212,7 +2258,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2229,7 +2274,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2241,7 +2285,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -2610,6 +2653,73 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "node_modules/nodemon": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", + "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -2628,7 +2738,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2689,6 +2798,14 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2734,7 +2851,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -2890,6 +3006,11 @@ "node": ">= 0.10" } }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2944,6 +3065,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -2992,7 +3121,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -3189,6 +3317,25 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3358,7 +3505,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -3374,6 +3520,31 @@ "node": ">=0.6" } }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -3403,6 +3574,22 @@ "node": ">= 0.6" } }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -4508,7 +4695,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4580,8 +4766,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "body-parser": { "version": "1.20.1", @@ -4621,7 +4806,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -4694,7 +4878,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4710,7 +4893,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -4768,6 +4950,22 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + } + } + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -4929,6 +5127,28 @@ "vary": "~1.1.2" } }, + "express-session": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "requires": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + } + } + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -5001,7 +5221,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -5053,7 +5272,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "optional": true }, "function-bind": { @@ -5181,6 +5399,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5209,7 +5432,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -5226,8 +5448,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -5238,7 +5459,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -5246,8 +5466,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "jake": { "version": "10.8.5", @@ -5512,6 +5731,56 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "nodemon": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", + "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -5523,8 +5792,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -5567,6 +5835,11 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5605,8 +5878,7 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { "version": "2.3.0", @@ -5689,6 +5961,11 @@ "ipaddr.js": "1.9.1" } }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5714,6 +5991,11 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -5753,7 +6035,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -5887,6 +6168,21 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -6014,7 +6310,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -6024,6 +6319,24 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + } + } + }, "tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -6047,6 +6360,19 @@ "mime-types": "~2.1.24" } }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index b8921a4..18f55ab 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,13 @@ "homepage": "https://github.com/consuelo-th/the-consuelo#readme", "dependencies": { "bcrypt": "^5.1.0", + "cookie-parser": "^1.4.6", "dotenv": "^16.0.3", "ejs": "^3.1.8", "express": "^4.18.2", - "mongoose": "^6.7.0" + "express-session": "^1.17.3", + "mongoose": "^6.7.0", + "nodemon": "^2.0.20" }, "devDependencies": { "autoprefixer": "^10.4.12", diff --git a/public/.DS_Store b/public/.DS_Store index 7181aab..ce2fd94 100644 Binary files a/public/.DS_Store and b/public/.DS_Store differ diff --git a/public/JS/auth.js b/public/JS/auth.js new file mode 100644 index 0000000..0b74492 --- /dev/null +++ b/public/JS/auth.js @@ -0,0 +1,14 @@ +const toggle = document.getElementById("togglePassword"); +const password = document.getElementById("password"); + +toggle.addEventListener("click", function() { + this.classList.toggle("fa-eye"); + + if (password.type === "password") { + password.type = "text"; + } else { + password.type = "password"; + } + +}) + diff --git a/public/JS/dashboard.js b/public/JS/dashboard.js new file mode 100644 index 0000000..724b271 --- /dev/null +++ b/public/JS/dashboard.js @@ -0,0 +1,267 @@ +/* Camera functionality */ +let camera_button = document.querySelector("#start-camera"); +let video = document.querySelector("#video"); +let click_button = document.querySelector("#click-photo"); +let canvas = document.querySelector("#canvas"); +let retakeBtn = document.getElementById("retake"); + +camera_button.addEventListener("click", async function () { + let stream = await navigator.mediaDevices.getUserMedia({ + video: true, + audio: false, + }); + video.srcObject = stream; +}); + +click_button.addEventListener("click", function () { + canvas.style.display = "block"; + video.style.display = "block"; + + canvas.getContext("2d").drawImage(video, 0, 0, canvas.width, canvas.height); + let image_data_url = canvas.toDataURL("image/jpeg"); + + // data url of the image + console.log(image_data_url); +}); + +retakeBtn.addEventListener("click", function () { + canvas.style.display = "none"; + video.style.display = "block"; +}); + +// Accept Patient prompt +let acceptBtn = document.querySelectorAll(".accept_appt"); +for (let i = 0; i < acceptBtn.length; i++) { + acceptBtn[i].addEventListener("click", () => { + let acceptModal = document.getElementById("acceptModal"); + acceptModal.style.display = "block"; + + var span = document.getElementsByClassName("close")[0]; + span.onclick = function () { + acceptModal.style.display = "none"; + }; + }); +} + +// View Patient prompt +let viewBtn = document.querySelectorAll(".view_appt"); +for (let i = 0; i < viewBtn.length; i++) { + viewBtn[i].addEventListener("click", () => { + let viewModal = document.getElementById("viewModal"); + viewModal.style.display = "block"; + + var close = document.getElementsByClassName("close")[1]; + close.onclick = function () { + viewModal.style.display = "none"; + }; + }); +} + +// Cancel Patient prompt +let cancelBtn = document.querySelectorAll(".cancel_appt"); +for (let i = 0; i < cancelBtn.length; i++) { + cancelBtn[i].addEventListener("click", () => { + let cancelModal = document.getElementById("cancelModal"); + cancelModal.style.display = "block"; + + var close = document.getElementsByClassName("close")[2]; + close.onclick = function () { + cancelModal.style.display = "none"; + }; + }); +} + +// Complete Profile Prompt +let completeProfile = document.getElementById("complete_profile"); +completeProfile.onclick = function () { + let completeModal = document.getElementById("completeModal"); + completeModal.style.display = "block"; + + //Submit Profile prompt + let submitProfile = document.getElementById("submit_profile"); + let submitProfileModal = document.getElementById("submitprofile_modal"); + submitProfile.onclick = function () { + submitProfileModal.style.display = "block"; + + let close = document.getElementsByClassName("close")[4]; + close.onclick = function () { + submitProfileModal.style.display = "none"; + completeModal.style.display = "none"; + }; + }; + + //Selfie prompt + let selfie = document.getElementById("selfie"); + let selfieModal = document.getElementById("selfieModal"); + let submitSelfie = document.getElementById("submit_selfie"); + let selfieSuccessful = document.getElementById("selfieSuccessModal"); + selfie.onclick = function () { + completeModal.style.display = "none"; + selfieModal.style.display = "block"; + + submitSelfie.onclick = function () { + selfieSuccessful.style.display = "block"; + }; + + let close = document.getElementsByClassName("close")[3]; + close.onclick = function () { + selfieSuccessful.style.display = "none"; + selfieModal.style.display = "none"; + completeModal.style.display = "block"; + }; + + let backBtn = document.getElementById("back_btn"); + backBtn.onclick = function () { + completeModal.style.display = "block"; + selfieModal.style.display = "none"; + }; + }; + + //Address prompt + let contactAddress = document.getElementById("contact_address"); + let contactAddressModal = document.getElementById("contact_addressModal"); + let submitAddress = document.getElementById("submit_address"); + let submitAddressModal = document.getElementById("submitaddress_modal"); + contactAddress.onclick = function () { + completeModal.style.display = "none"; + contactAddressModal.style.display = "block"; + + submitAddress.onclick = function () { + submitAddressModal.style.display = "block"; + }; + + let close = document.getElementsByClassName("close")[5]; + close.onclick = function () { + submitAddressModal.style.display = "none"; + contactAddressModal.style.display = "none"; + completeModal.style.display = "block"; + }; + + let backBtn1 = document.getElementById("back_btn1"); + backBtn1.onclick = function () { + completeModal.style.display = "block"; + contactAddressModal.style.display = "none"; + }; + }; + + //certifications prompt + let certifications = document.getElementById("certifications"); + let certificationsModal = document.getElementById("certifications_modal"); + let submitCertifications = document.getElementById("submit_certifications"); + let submitCertificationsModal = document.getElementById( + "submitcertifications_modal" + ); + certifications.onclick = function () { + completeModal.style.display = "none"; + certificationsModal.style.display = "block"; + + submitCertifications.onclick = function () { + submitCertificationsModal.style.display = "block"; + }; + + let close = document.getElementsByClassName("close")[6]; + close.onclick = function () { + submitCertificationsModal.style.display = "none"; + certificationsModal.style.display = "none"; + completeModal.style.display = "block"; + }; + + let backBtn2 = document.getElementById("back_btn2"); + backBtn2.onclick = function () { + completeModal.style.display = "block"; + certificationsModal.style.display = "none"; + }; + }; + + //Contact prompt + let contact = document.getElementById("contact"); + let contactModal = document.getElementById("contact_modal"); + let submitContact = document.getElementById("submit_contact"); + let submitContactModal = document.getElementById("submitcontact_modal"); + contact.onclick = function () { + completeModal.style.display = "none"; + contactModal.style.display = "block"; + + submitContact.onclick = function () { + submitContactModal.style.display = "block"; + }; + + let close = document.getElementsByClassName("close")[7]; + close.onclick = function () { + submitContactModal.style.display = "none"; + contactModal.style.display = "none"; + completeModal.style.display = "block"; + }; + + let backBtn3 = document.getElementById("back_btn3"); + backBtn3.onclick = function () { + completeModal.style.display = "block"; + contactModal.style.display = "none"; + }; + }; +}; + +// Drag and drop funtionality +document.querySelectorAll(".drop-zone__input").forEach((inputElement) => { + const dropZoneElement = inputElement.closest(".drop-zone"); + + dropZoneElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateThumbnail(dropZoneElement, inputElement.files[0]); + } + }); + + dropZoneElement.addEventListener("dragover", (e) => { + e.preventDefault(); + dropZoneElement.classList.add("drop-zone--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + dropZoneElement.addEventListener(type, (e) => { + dropZoneElement.classList.remove("drop-zone--over"); + }); + }); + + dropZoneElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateThumbnail(dropZoneElement, e.dataTransfer.files[0]); + } + + dropZoneElement.classList.remove("drop-zone--over"); + }); +}); + +// Show drag and drop thumbnail +function updateThumbnail(dropZoneElement, file) { + let thumbnailElement = dropZoneElement.querySelector(".drop-zone__thumb"); + + if (dropZoneElement.querySelector(".drop-zone__prompt")) { + dropZoneElement.querySelector(".drop-zone__prompt").remove(); + } + + if (!thumbnailElement) { + thumbnailElement = document.createElement("div"); + thumbnailElement.classList.add("drop-zone__thumb"); + dropZoneElement.appendChild(thumbnailElement); + } + + thumbnailElement.dataset.label = file.name; + + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + thumbnailElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + thumbnailElement.style.backgroundImage = null; + } +} diff --git a/public/JS/forum.js b/public/JS/forum.js new file mode 100644 index 0000000..511ceb0 --- /dev/null +++ b/public/JS/forum.js @@ -0,0 +1,102 @@ +// let newTopicButton = document.getElementById("new_topic"); +// newTopicButton.addEventListener("click", ) + + +let commentsButton = document.querySelectorAll(".comments_btn"); + + + +for (let i = 0; i < commentsButton.length; i++) { + commentsButton[i].addEventListener("click", function () { + document.getElementById("main").innerHTML = ` +
+ Back +
+ +
+ +
+
Hassy123
+

Posted on Sep, 22, 2022

+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis egestas blandit facilisi dolor velit orci ac lorem. Ultrices netus convallis scelerisque nam. Ipsum nam vel viverra lectus mattis in. Curabitur netus duis ipsum at in. Cras gravida velit sagittis, felis et aliquam dis. Et lorem interdum sodales velit adipiscing in. Sed vulputate ipsum mi at rhoncus. Et arcu at sed consectetur fermentum venenatis, mauris. Ultricies sed ultrices luctus nulla justo

+ + +
+
+

Join this conversation

+
+
+ +
+ + + +
+ +
+ + `; + }); +}; + + + +let ellipsis = document.querySelectorAll(".delete_btn") +for (let i = 0; i< ellipsis.length; i++) { + ellipsis[i].addEventListener("click", function() { + ellipsis[i].innerHTML = ``; + + ellipsis[i].addEventListener("click", () => { + let deleteModal = document.getElementById("deleteModal"); + let confirmDeleteModal = document.getElementById("confirmDeleteModal"); + let cancelDelete = document.getElementsByClassName("cancel")[0]; + let confirmDelete = document.getElementsByClassName("confirm")[0]; + + deleteModal.style.display = "block"; + cancelDelete.onclick = function() { + deleteModal.style.display = "none"; + ellipsis[i].innerHTML = `...`; + + } + confirmDelete.onclick = function() { + deleteModal.style.display = "none"; + confirmDeleteModal.style.display ="block"; + } + + + window.onclick = function(event) { + if (event.target == confirmDeleteModal) { + confirmDeleteModal.style.display = "none"; + ellipsis[i].innerHTML = `...`; + } + } + + + } ) + } ) +} + +var modal = document.getElementById("myModal"); + +var btn = document.getElementById("newtopic_btn"); + +var span = document.getElementsByClassName("close")[0]; + +// When the user clicks on the button, open the modal +btn.onclick = function() { + modal.style.display = "block"; +} + +// When the user clicks on (x), close the modal +span.onclick = function() { + modal.style.display = "none"; +} + +// When the user clicks anywhere outside of the modal, close it +window.onclick = function(event) { + if (event.target == modal) { + modal.style.display = "none"; + } +} \ No newline at end of file diff --git a/public/JS/meetATherapistAuth.js b/public/JS/meetATherapistAuth.js new file mode 100644 index 0000000..4a17cfd --- /dev/null +++ b/public/JS/meetATherapistAuth.js @@ -0,0 +1,37 @@ +const numberInput = document.getElementById("numberInput"); +const numberSubmit = document.getElementById("numberSubmit"); +const otpInput = document.getElementById("otpInput"); +const otpSubmit = document.getElementById("otpSubmit"); +const mainContent = document.getElementById("main-content"); +const verification = document.getElementById("verification"); +const modal = document.getElementById("modal") + + +mainContent.addEventListener("click", (e) => { + e.preventDefault() + mainContent.classList.toggle("hidden") + numberInput.classList.toggle("hidden") + verification.classList.toggle("hidden") + verification.classList.toggle("flex") +}) + +numberInput.addEventListener("click", (e) => { + e.preventDefault(); + numberInput.classList.toggle("hidden") + otpInput.classList.toggle("hidden") +}) + +otpSubmit.addEventListener("click", (e) => { + e.preventDefault(); + otpInput.classList.toggle("hidden") + modal.classList.toggle("hidden") +}) + + +modal.addEventListener("click", (e) => { + modal.classList.toggle("hidden"); + mainContent.classList.toggle("hidden"); + mainContent.classList.toggle("flex"); + verification.classList.toggle("hidden") + +}) \ No newline at end of file diff --git a/public/JS/mental-health-tips.js b/public/JS/mental-health-tips.js new file mode 100644 index 0000000..3ed2bdf --- /dev/null +++ b/public/JS/mental-health-tips.js @@ -0,0 +1,22 @@ +let mentalTipsCard = document.querySelectorAll(".tips-card"); + +for (let i = 0; i < mentalTipsCard.length; i++) { + mentalTipsCard[i].addEventListener("click", function () { + document.getElementById("main").innerHTML = ` +
+ Back +

Self-care

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit ut aliquam, purus sit amet luctus venenatis, lectus magna fringilla urna, porttitor rhoncus dolor purus non enim praesent elementum facilisis leo, vel fringilla est ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis mauris sit amet massa vitae tortor condimentum lacinia quis vel eros donec ac odio tempor orci dapibus ultrices in iaculis nunc sed augue lacus

+

Tips on Self-care

+ +
+ + `; + }); +} diff --git a/public/JS/selfAffirmation.js b/public/JS/selfAffirmation.js new file mode 100644 index 0000000..bb52351 --- /dev/null +++ b/public/JS/selfAffirmation.js @@ -0,0 +1,25 @@ +'use strict'; + +const saveBtn = document.querySelector('.save-btn'); +const modal = document.querySelector('.modal'); +const overlay = document.querySelector('.overlay'); +const closeModalBtn = document.querySelector('.close-modal'); +const displayModal = function(){ + modal.classList.remove('hidden'); + overlay.classList.remove('hidden'); +} +const hideModal = function(){ + modal.classList.add('hidden'); + overlay.classList.add('hidden'); +} +saveBtn.addEventListener('click', displayModal) + +overlay.addEventListener('click', hideModal) + +closeModalBtn.addEventListener ('click', hideModal) + +document.addEventListener('keydown', function(e){ + if(e.key === 'Escape' && !modal.classList.contains('hidden')){ + hideModal() + } +}) diff --git a/public/JS/thVerification.js b/public/JS/thVerification.js new file mode 100644 index 0000000..0179f47 --- /dev/null +++ b/public/JS/thVerification.js @@ -0,0 +1,18 @@ + +const modal = document.getElementById("modal"); +const openModal = document.getElementById("openModal"); +const closeModal = document.querySelectorAll(".closeModal"); + +closeModal.forEach(btn => { + btn.addEventListener("click", () => { + toggleModal(modal, "hidden") + }) +}); + +openModal.addEventListener("click", () => { + toggleModal(modal, "hidden") +}) + +function toggleModal(elem, className) { + elem.classList.toggle(className) +} \ No newline at end of file diff --git a/public/css/input.css b/public/css/input.css index 4f1b229..8190931 100644 --- a/public/css/input.css +++ b/public/css/input.css @@ -1,8 +1,20 @@ -@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;400;600;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;400;600;700&family=Poppins&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; +:root { + --Iconsax-Size:20px; +} + +.main-nav .iconsax { + --Iconsax-Color:#FFF; +} + +.nav-active .iconsax { + --Iconsax-Color:#2C6E49; +} + html { font-family: 'Montserrat', sans-serif; } @@ -16,11 +28,16 @@ h6 { font-weight: 700; } +.poppins { + font-family: 'Poppins', sans-serif; + +} + .nav-active { @apply bg-primary-10 border-l-8 border-solid border-l-primary-70 text-primary-60; } .main-nav > *:hover { - @apply bg-primary-10 border-l-8 border-solid border-l-primary-70 text-primary-60 ease-in-out duration-300 -} + @apply nav-active ease-in-out duration-300 +} \ No newline at end of file diff --git a/public/css/main.css b/public/css/main.css index 879e269..aea8fb4 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -1,4 +1,4 @@ -@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;400;600;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;400;600;700&family=Poppins&display=swap'); /* ! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com @@ -506,40 +506,6 @@ video { --tw-backdrop-sepia: ; } -.container{ - width: 100%; -} - -@media (min-width: 640px){ - .container{ - max-width: 640px; - } -} - -@media (min-width: 768px){ - .container{ - max-width: 768px; - } -} - -@media (min-width: 1024px){ - .container{ - max-width: 1024px; - } -} - -@media (min-width: 1280px){ - .container{ - max-width: 1280px; - } -} - -@media (min-width: 1536px){ - .container{ - max-width: 1536px; - } -} - .sr-only{ position: absolute; width: 1px; @@ -556,387 +522,1278 @@ video { position: static; } -.relative{ - position: relative; +.fixed{ + position: fixed; } -.mx-auto{ - margin-left: auto; - margin-right: auto; +.absolute{ + position: absolute; } -.mt-20{ - margin-top: 5rem; +.relative{ + position: relative; } -.ml-3{ - margin-left: 0.75rem; +.inset-0{ + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; } -.-ml-64{ - margin-left: -16rem; +.top-4{ + top: 1rem; } -.mb-8{ - margin-bottom: 2rem; +.left-12{ + left: 3rem; } -.mb-2{ - margin-bottom: 0.5rem; +.top-32{ + top: 8rem; } -.mr-4{ - margin-right: 1rem; +.left-36{ + left: 9rem; } -.mt-1{ - margin-top: 0.25rem; +.top-24{ + top: 6rem; } -.mt-6{ - margin-top: 1.5rem; +.right-28{ + right: 7rem; } -.mt-8{ - margin-top: 2rem; +.top-36{ + top: 9rem; } -.mr-2{ - margin-right: 0.5rem; +.left-60{ + left: 15rem; } -.mt-4{ - margin-top: 1rem; +.top-1\/2{ + top: 50%; } -.mb-0{ - margin-bottom: 0px; +.right-0{ + right: 0px; } -.block{ - display: block; +.top-80{ + top: 20rem; } -.inline{ - display: inline; +.right-32{ + right: 8rem; } -.flex{ - display: flex; +.top-52{ + top: 13rem; } -.hidden{ - display: none; +.left-5{ + left: 1.25rem; } -.h-screen{ - height: 100vh; +.top-3{ + top: 0.75rem; } -.h-6{ - height: 1.5rem; +.left-6{ + left: 1.5rem; } -.h-10{ - height: 2.5rem; +.top-0{ + top: 0px; } -.h-full{ - height: 100%; +.left-0{ + left: 0px; } -.min-h-screen{ - min-height: 100vh; +.left-1\/2{ + left: 50%; } -.w-64{ - width: 16rem; +.right-4{ + right: 1rem; } -.w-full{ - width: 100%; +.top-2{ + top: 0.5rem; } -.w-6{ - width: 1.5rem; +.bottom-0{ + bottom: 0px; } -.w-10{ - width: 2.5rem; +.left-20{ + left: 5rem; } -.w-32{ - width: 8rem; +.top-8{ + top: 2rem; } -.w-11\/12{ - width: 91.666667%; +.left-32{ + left: 8rem; } -.max-w-3xl{ - max-width: 48rem; +.left-64{ + left: 16rem; } -.max-w-sm{ - max-width: 24rem; +.z-50{ + z-index: 50; } -.max-w-xs{ - max-width: 20rem; +.z-10{ + z-index: 10; } -.max-w-2xl{ - max-width: 42rem; +.z-40{ + z-index: 40; } -.flex-shrink-0{ - flex-shrink: 0; +.z-30{ + z-index: 30; } -.flex-grow{ - flex-grow: 1; +.z-20{ + z-index: 20; } -.-translate-x-full{ - --tw-translate-x: -100%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +.col-span-2{ + grid-column: span 2 / span 2; } -.transform{ - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +.col-span-1{ + grid-column: span 1 / span 1; } -.grid-cols-2{ - grid-template-columns: repeat(2, minmax(0, 1fr)); +.float-right{ + float: right; } -.flex-row{ - flex-direction: row; +.m-auto{ + margin: auto; } -.flex-col{ - flex-direction: column; +.mx-auto{ + margin-left: auto; + margin-right: auto; } -.flex-wrap{ - flex-wrap: wrap; +.my-6{ + margin-top: 1.5rem; + margin-bottom: 1.5rem; } -.place-items-center{ - place-items: center; +.my-0{ + margin-top: 0px; + margin-bottom: 0px; } -.items-center{ - align-items: center; +.mx-8{ + margin-left: 2rem; + margin-right: 2rem; } -.justify-start{ - justify-content: flex-start; +.my-5{ + margin-top: 1.25rem; + margin-bottom: 1.25rem; } -.justify-center{ - justify-content: center; +.my-7{ + margin-top: 1.75rem; + margin-bottom: 1.75rem; } -.justify-between{ - justify-content: space-between; +.mt-20{ + margin-top: 5rem; } -.gap-2{ - gap: 0.5rem; +.ml-3{ + margin-left: 0.75rem; } -.gap-3{ - gap: 0.75rem; +.-ml-64{ + margin-left: -16rem; } -.space-x-1 > :not([hidden]) ~ :not([hidden]){ - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +.mb-8{ + margin-bottom: 2rem; } -.space-y-2 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse: 0; - margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +.mb-2{ + margin-bottom: 0.5rem; } -.space-x-3 > :not([hidden]) ~ :not([hidden]){ - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); +.mr-4{ + margin-right: 1rem; } -.space-y-3 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse: 0; - margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +.mt-1{ + margin-top: 0.25rem; } -.space-y-4 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +.mr-3{ + margin-right: 0.75rem; } -.rounded-2xl{ - border-radius: 1rem; +.ml-1{ + margin-left: 0.25rem; } -.rounded-full{ - border-radius: 9999px; +.mt-4{ + margin-top: 1rem; } -.rounded-sm{ - border-radius: 0.125rem; +.mr-auto{ + margin-right: auto; } -.rounded-md{ - border-radius: 0.375rem; +.mb-4{ + margin-bottom: 1rem; } -.rounded-lg{ - border-radius: 0.5rem; +.mb-6{ + margin-bottom: 1.5rem; } -.rounded-b{ - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; +.-ml-10{ + margin-left: -2.5rem; } -.border-2{ - border-width: 2px; +.mb-3{ + margin-bottom: 0.75rem; } -.border{ - border-width: 1px; +.-ml-px{ + margin-left: -1px; } -.border-\[1px\]{ - border-width: 1px; +.mt-2{ + margin-top: 0.5rem; } -.border-r{ - border-right-width: 1px; +.mt-8{ + margin-top: 2rem; } -.border-l-8{ - border-left-width: 8px; +.mt-0\.5{ + margin-top: 0.125rem; } -.border-solid{ - border-style: solid; +.mt-0{ + margin-top: 0px; } -.border-primary-50{ - --tw-border-opacity: 1; - border-color: rgb(79 134 103 / var(--tw-border-opacity)); +.mt-5{ + margin-top: 1.25rem; } -.border-primary-90{ - --tw-border-opacity: 1; - border-color: rgb(22 55 37 / var(--tw-border-opacity)); +.mt-6{ + margin-top: 1.5rem; } -.border-gray-50{ - --tw-border-opacity: 1; - border-color: rgb(70 70 70 / var(--tw-border-opacity)); +.ml-4{ + margin-left: 1rem; } -.border-l-primary-70{ - --tw-border-opacity: 1; - border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); +.ml-2{ + margin-left: 0.5rem; } -.bg-secondary{ - --tw-bg-opacity: 1; - background-color: rgb(229 229 229 / var(--tw-bg-opacity)); +.ml-6{ + margin-left: 1.5rem; } -.bg-primary-60{ - --tw-bg-opacity: 1; - background-color: rgb(44 110 73 / var(--tw-bg-opacity)); +.mr-2{ + margin-right: 0.5rem; } -.bg-primary-10{ - --tw-bg-opacity: 1; - background-color: rgb(213 226 219 / var(--tw-bg-opacity)); +.mb-0{ + margin-bottom: 0px; } -.bg-\[\#EFF3F6\]{ - --tw-bg-opacity: 1; - background-color: rgb(239 243 246 / var(--tw-bg-opacity)); +.ml-auto{ + margin-left: auto; } -.bg-white{ - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +.ml-10{ + margin-left: 2.5rem; } -.bg-primary-50{ - --tw-bg-opacity: 1; - background-color: rgb(79 134 103 / var(--tw-bg-opacity)); +.mt-16{ + margin-top: 4rem; } -.bg-primary-70{ - --tw-bg-opacity: 1; - background-color: rgb(37 92 61 / var(--tw-bg-opacity)); +.mt-3{ + margin-top: 0.75rem; } -.bg-white\/20{ - background-color: rgb(255 255 255 / 0.2); +.mt-12{ + margin-top: 3rem; } -.bg-cover{ - background-size: cover; +.ml-5{ + margin-left: 1.25rem; } -.p-4{ - padding: 1rem; +.ml-12{ + margin-left: 3rem; } -.p-1{ - padding: 0.25rem; +.ml-48{ + margin-left: 12rem; } -.p-3{ - padding: 0.75rem; +.-ml-20{ + margin-left: -5rem; } -.px-4{ - padding-left: 1rem; - padding-right: 1rem; +.mb-10{ + margin-bottom: 2.5rem; } -.py-4{ - padding-top: 1rem; - padding-bottom: 1rem; +.mb-5{ + margin-bottom: 1.25rem; } -.px-2{ - padding-left: 0.5rem; - padding-right: 0.5rem; +.ml-0{ + margin-left: 0px; } -.py-3{ - padding-top: 0.75rem; - padding-bottom: 0.75rem; +.mr-10{ + margin-right: 2.5rem; } -.py-1{ - padding-top: 0.25rem; - padding-bottom: 0.25rem; +.mt-28{ + margin-top: 7rem; } -.py-6{ - padding-top: 1.5rem; - padding-bottom: 1.5rem; +.mb-7{ + margin-bottom: 1.75rem; } -.px-8{ - padding-left: 2rem; - padding-right: 2rem; +.mt-10{ + margin-top: 2.5rem; +} + +.block{ + display: block; +} + +.inline-block{ + display: inline-block; +} + +.inline{ + display: inline; +} + +.flex{ + display: flex; +} + +.inline-flex{ + display: inline-flex; +} + +.table{ + display: table; +} + +.grid{ + display: grid; +} + +.hidden{ + display: none; +} + +.h-screen{ + height: 100vh; +} + +.h-6{ + height: 1.5rem; +} + +.h-10{ + height: 2.5rem; +} + +.h-full{ + height: 100%; +} + +.h-56{ + height: 14rem; +} + +.h-96{ + height: 24rem; +} + +.h-\[500px\]{ + height: 500px; +} + +.h-32{ + height: 8rem; +} + +.h-5{ + height: 1.25rem; +} + +.h-64{ + height: 16rem; +} + +.h-16{ + height: 4rem; +} + +.h-48{ + height: 12rem; +} + +.h-auto{ + height: auto; +} + +.h-36{ + height: 9rem; +} + +.h-8{ + height: 2rem; +} + +.h-52{ + height: 13rem; +} + +.h-80{ + height: 20rem; +} + +.h-fit{ + height: -moz-fit-content; + height: fit-content; +} + +.h-9{ + height: 2.25rem; +} + +.h-\[48px\]{ + height: 48px; +} + +.max-h-screen{ + max-height: 100vh; +} + +.min-h-screen{ + min-height: 100vh; +} + +.min-h-\[calc\(100\%-6\%\)\]{ + min-height: calc(100% - 6%); +} + +.min-h-\[715px\]{ + min-height: 715px; +} + +.min-h-\[calc\(100\%-64px\)\]{ + min-height: calc(100% - 64px); +} + +.min-h-\[610px\]{ + min-height: 610px; +} + +.min-h-min{ + min-height: -moz-min-content; + min-height: min-content; +} + +.w-64{ + width: 16rem; +} + +.w-full{ + width: 100%; +} + +.w-6{ + width: 1.5rem; +} + +.w-10{ + width: 2.5rem; +} + +.w-32{ + width: 8rem; +} + +.w-\[61\%\]{ + width: 61%; +} + +.w-80{ + width: 20rem; +} + +.w-\[27\%\]{ + width: 27%; +} + +.w-\[20\%\]{ + width: 20%; +} + +.w-\[13\%\]{ + width: 13%; +} + +.w-\[15\%\]{ + width: 15%; +} + +.w-\[18\%\]{ + width: 18%; +} + +.w-\[34\%\]{ + width: 34%; +} + +.w-11\/12{ + width: 91.666667%; +} + +.w-5{ + width: 1.25rem; +} + +.w-16{ + width: 4rem; +} + +.w-96{ + width: 24rem; +} + +.w-20{ + width: 5rem; +} + +.w-1\/2{ + width: 50%; +} + +.w-1\/4{ + width: 25%; +} + +.w-8{ + width: 2rem; +} + +.w-72{ + width: 18rem; +} + +.w-fit{ + width: -moz-fit-content; + width: fit-content; +} + +.w-3\/4{ + width: 75%; +} + +.w-5\/6{ + width: 83.333333%; +} + +.w-4\/5{ + width: 80%; +} + +.w-2\/4{ + width: 50%; +} + +.w-\[95\%\]{ + width: 95%; +} + +.w-\[424px\]{ + width: 424px; +} + +.w-\[94px\]{ + width: 94px; +} + +.w-\[168px\]{ + width: 168px; +} + +.w-\[106px\]{ + width: 106px; +} + +.min-w-\[40\%\]{ + min-width: 40%; +} + +.max-w-3xl{ + max-width: 48rem; +} + +.max-w-sm{ + max-width: 24rem; +} + +.max-w-xs{ + max-width: 20rem; +} + +.max-w-screen-xl{ + max-width: 1280px; +} + +.max-w-2xl{ + max-width: 42rem; +} + +.max-w-md{ + max-width: 28rem; +} + +.max-w-screen-2xl{ + max-width: 1536px; +} + +.max-w-lg{ + max-width: 32rem; +} + +.max-w-xl{ + max-width: 36rem; +} + +.max-w-4xl{ + max-width: 56rem; +} + +.max-w-6xl{ + max-width: 72rem; +} + +.flex-shrink-0{ + flex-shrink: 0; +} + +.flex-grow{ + flex-grow: 1; +} + +.-translate-x-full{ + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.-translate-x-1\/2{ + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.-translate-y-1\/2{ + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transform{ + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.cursor-pointer{ + cursor: pointer; +} + +.grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.flex-row{ + flex-direction: row; +} + +.flex-col{ + flex-direction: column; +} + +.flex-col-reverse{ + flex-direction: column-reverse; +} + +.flex-wrap{ + flex-wrap: wrap; +} + +.flex-nowrap{ + flex-wrap: nowrap; +} + +.place-items-center{ + place-items: center; +} + +.items-start{ + align-items: flex-start; +} + +.items-center{ + align-items: center; +} + +.justify-start{ + justify-content: flex-start; +} + +.justify-end{ + justify-content: flex-end; +} + +.justify-center{ + justify-content: center; +} + +.justify-between{ + justify-content: space-between; +} + +.justify-around{ + justify-content: space-around; +} + +.gap-2{ + gap: 0.5rem; +} + +.gap-3{ + gap: 0.75rem; +} + +.gap-4{ + gap: 1rem; +} + +.gap-8{ + gap: 2rem; +} + +.gap-5{ + gap: 1.25rem; +} + +.gap-6{ + gap: 1.5rem; +} + +.space-x-1 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-2 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + +.space-x-3 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(0.75rem * var(--tw-space-x-reverse)); + margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-5 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.25rem * var(--tw-space-y-reverse)); +} + +.space-x-6 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(1.5rem * var(--tw-space-x-reverse)); + margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-4 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} + +.space-y-6 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); +} + +.space-x-2 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-3 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +} + +.place-self-center{ + place-self: center; +} + +.self-start{ + align-self: flex-start; +} + +.self-end{ + align-self: flex-end; +} + +.self-center{ + align-self: center; +} + +.overflow-auto{ + overflow: auto; +} + +.overflow-hidden{ + overflow: hidden; +} + +.overflow-x-auto{ + overflow-x: auto; +} + +.overflow-y-auto{ + overflow-y: auto; +} + +.overflow-x-hidden{ + overflow-x: hidden; +} + +.overflow-y-scroll{ + overflow-y: scroll; +} + +.whitespace-nowrap{ + white-space: nowrap; +} + +.rounded-2xl{ + border-radius: 1rem; +} + +.rounded-full{ + border-radius: 9999px; +} + +.rounded-sm{ + border-radius: 0.125rem; +} + +.rounded-md{ + border-radius: 0.375rem; +} + +.rounded-lg{ + border-radius: 0.5rem; +} + +.rounded-xl{ + border-radius: 0.75rem; +} + +.rounded{ + border-radius: 0.25rem; +} + +.rounded-3xl{ + border-radius: 1.5rem; +} + +.rounded-b{ + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rounded-t-lg{ + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} + +.rounded-t{ + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.border-2{ + border-width: 2px; +} + +.border-\[1px\]{ + border-width: 1px; +} + +.border{ + border-width: 1px; +} + +.border-\[0\.5px\]{ + border-width: 0.5px; +} + +.border-r{ + border-right-width: 1px; +} + +.border-l-8{ + border-left-width: 8px; +} + +.border-l-2{ + border-left-width: 2px; +} + +.border-b{ + border-bottom-width: 1px; +} + +.border-t{ + border-top-width: 1px; +} + +.border-solid{ + border-style: solid; +} + +.border-dashed{ + border-style: dashed; +} + +.border-primary-50{ + --tw-border-opacity: 1; + border-color: rgb(79 134 103 / var(--tw-border-opacity)); +} + +.border-primary-90{ + --tw-border-opacity: 1; + border-color: rgb(22 55 37 / var(--tw-border-opacity)); +} + +.border-\[\#F2F4F7\]{ + --tw-border-opacity: 1; + border-color: rgb(242 244 247 / var(--tw-border-opacity)); +} + +.border-primary-60{ + --tw-border-opacity: 1; + border-color: rgb(44 110 73 / var(--tw-border-opacity)); +} + +.border-afribook{ + --tw-border-opacity: 1; + border-color: rgb(108 111 109 / var(--tw-border-opacity)); +} + +.border-gray-50{ + --tw-border-opacity: 1; + border-color: rgb(70 70 70 / var(--tw-border-opacity)); +} + +.border-\[\#E7E7E7\]{ + --tw-border-opacity: 1; + border-color: rgb(231 231 231 / var(--tw-border-opacity)); +} + +.border-helper{ + --tw-border-opacity: 1; + border-color: rgb(89 94 91 / var(--tw-border-opacity)); +} + +.border-gray-40{ + --tw-border-opacity: 1; + border-color: rgb(88 88 88 / var(--tw-border-opacity)); +} + +.border-icon{ + --tw-border-opacity: 1; + border-color: rgb(108 111 109 / var(--tw-border-opacity)); +} + +.border-primary-40{ + --tw-border-opacity: 1; + border-color: rgb(114 158 134 / var(--tw-border-opacity)); +} + +.border-black{ + --tw-border-opacity: 1; + border-color: rgb(0 0 0 / var(--tw-border-opacity)); +} + +.border-x-primary-110{ + --tw-border-opacity: 1; + border-left-color: rgb(9 22 15 / var(--tw-border-opacity)); + border-right-color: rgb(9 22 15 / var(--tw-border-opacity)); +} + +.border-l-primary-70{ + --tw-border-opacity: 1; + border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); +} + +.border-l-\[transparent\]{ + border-left-color: transparent; +} + +.bg-secondary{ + --tw-bg-opacity: 1; + background-color: rgb(229 229 229 / var(--tw-bg-opacity)); +} + +.bg-primary-60{ + --tw-bg-opacity: 1; + background-color: rgb(44 110 73 / var(--tw-bg-opacity)); +} + +.bg-primary-10{ + --tw-bg-opacity: 1; + background-color: rgb(213 226 219 / var(--tw-bg-opacity)); +} + +.bg-\[\#EFF3F6\]{ + --tw-bg-opacity: 1; + background-color: rgb(239 243 246 / var(--tw-bg-opacity)); +} + +.bg-white{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} + +.bg-primary-50{ + --tw-bg-opacity: 1; + background-color: rgb(79 134 103 / var(--tw-bg-opacity)); +} + +.bg-primary-70{ + --tw-bg-opacity: 1; + background-color: rgb(37 92 61 / var(--tw-bg-opacity)); +} + +.bg-\[\#2C6E49\]{ + --tw-bg-opacity: 1; + background-color: rgb(44 110 73 / var(--tw-bg-opacity)); +} + +.bg-primary-100{ + --tw-bg-opacity: 1; + background-color: rgb(15 37 24 / var(--tw-bg-opacity)); +} + +.bg-\[\#FF9600\]{ + --tw-bg-opacity: 1; + background-color: rgb(255 150 0 / var(--tw-bg-opacity)); +} + +.bg-black{ + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); +} + +.bg-card-border{ + --tw-bg-opacity: 1; + background-color: rgb(230 246 237 / var(--tw-bg-opacity)); +} + +.bg-secondary-100{ + --tw-bg-opacity: 1; + background-color: rgb(85 85 76 / var(--tw-bg-opacity)); +} + +.bg-error{ + --tw-bg-opacity: 1; + background-color: rgb(191 94 94 / var(--tw-bg-opacity)); +} + +.bg-primary-40{ + --tw-bg-opacity: 1; + background-color: rgb(114 158 134 / var(--tw-bg-opacity)); +} + +.bg-gray-50{ + --tw-bg-opacity: 1; + background-color: rgb(70 70 70 / var(--tw-bg-opacity)); +} + +.bg-opacity-10{ + --tw-bg-opacity: 0.1; +} + +.bg-opacity-60{ + --tw-bg-opacity: 0.6; +} + +.bg-opacity-20{ + --tw-bg-opacity: 0.2; +} + +.bg-opacity-50{ + --tw-bg-opacity: 0.5; +} + +.bg-gradient-to-r{ + background-image: linear-gradient(to right, var(--tw-gradient-stops)); +} + +.bg-\[url\(\'\.\.\/images\/search_icon\.svg\'\)\]{ + background-image: url('../images/search_icon.svg'); +} + +.bg-\[url\(\'\.\.\/images\/no_appointments_bg\.svg\'\)\]{ + background-image: url('../images/no_appointments_bg.svg'); +} + +.from-\[\#46A972\]{ + --tw-gradient-from: #46A972; + --tw-gradient-to: rgb(70 169 114 / 0); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.to-\[\#225A3B\]{ + --tw-gradient-to: #225A3B; +} + +.bg-left{ + background-position: left; +} + +.bg-center{ + background-position: center; +} + +.bg-no-repeat{ + background-repeat: no-repeat; +} + +.object-cover{ + -o-object-fit: cover; + object-fit: cover; +} + +.p-4{ + padding: 1rem; +} + +.p-1{ + padding: 0.25rem; +} + +.p-2{ + padding: 0.5rem; +} + +.p-6{ + padding: 1.5rem; +} + +.p-3{ + padding: 0.75rem; +} + +.p-5{ + padding: 1.25rem; +} + +.p-1\.5{ + padding: 0.375rem; +} + +.p-9{ + padding: 2.25rem; +} + +.p-8{ + padding: 2rem; +} + +.p-11{ + padding: 2.75rem; +} + +.px-4{ + padding-left: 1rem; + padding-right: 1rem; +} + +.py-4{ + padding-top: 1rem; + padding-bottom: 1rem; +} + +.px-2{ + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.py-3{ + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.py-1{ + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-6{ + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +.py-5{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.py-2\.5{ + padding-top: 0.625rem; + padding-bottom: 0.625rem; } .py-2{ @@ -944,29 +1801,183 @@ video { padding-bottom: 0.5rem; } -.px-10{ - padding-left: 2.5rem; - padding-right: 2.5rem; -} - .px-6{ padding-left: 1.5rem; padding-right: 1.5rem; } +.py-10{ + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} + +.py-8{ + padding-top: 2rem; + padding-bottom: 2rem; +} + .py-12{ padding-top: 3rem; padding-bottom: 3rem; } +.px-12{ + padding-left: 3rem; + padding-right: 3rem; +} + +.py-32{ + padding-top: 8rem; + padding-bottom: 8rem; +} + +.px-8{ + padding-left: 2rem; + padding-right: 2rem; +} + +.px-10{ + padding-left: 2.5rem; + padding-right: 2.5rem; +} + +.px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.px-3{ + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.py-7{ + padding-top: 1.75rem; + padding-bottom: 1.75rem; +} + +.px-20{ + padding-left: 5rem; + padding-right: 5rem; +} + +.px-16{ + padding-left: 4rem; + padding-right: 4rem; +} + +.pl-4{ + padding-left: 1rem; +} + +.pl-\[52px\]{ + padding-left: 52px; +} + +.pt-2{ + padding-top: 0.5rem; +} + +.pb-1{ + padding-bottom: 0.25rem; +} + +.pt-5{ + padding-top: 1.25rem; +} + +.pb-6{ + padding-bottom: 1.5rem; +} + +.pt-24{ + padding-top: 6rem; +} + .pr-12{ padding-right: 3rem; } +.pt-8{ + padding-top: 2rem; +} + +.pb-4{ + padding-bottom: 1rem; +} + +.pl-8{ + padding-left: 2rem; +} + +.pl-6{ + padding-left: 1.5rem; +} + +.pr-6{ + padding-right: 1.5rem; +} + +.pt-6{ + padding-top: 1.5rem; +} + +.pb-8{ + padding-bottom: 2rem; +} + +.pl-2{ + padding-left: 0.5rem; +} + +.pt-32{ + padding-top: 8rem; +} + +.pt-12{ + padding-top: 3rem; +} + +.pr-10{ + padding-right: 2.5rem; +} + +.pt-4{ + padding-top: 1rem; +} + +.pb-14{ + padding-bottom: 3.5rem; +} + +.pb-2{ + padding-bottom: 0.5rem; +} + +.pt-9{ + padding-top: 2.25rem; +} + +.pb-7{ + padding-bottom: 1.75rem; +} + +.pb-5{ + padding-bottom: 1.25rem; +} + +.text-left{ + text-align: left; +} + .text-center{ text-align: center; } +.text-justify{ + text-align: justify; +} + .align-middle{ vertical-align: middle; } @@ -996,6 +2007,11 @@ video { line-height: 1rem; } +.text-4xl{ + font-size: 2.25rem; + line-height: 2.5rem; +} + .text-3xl{ font-size: 1.875rem; line-height: 2.25rem; @@ -1006,6 +2022,11 @@ video { line-height: 2rem; } +.text-9xl{ + font-size: 8rem; + line-height: 1; +} + .font-bold{ font-weight: 700; } @@ -1018,6 +2039,14 @@ video { font-weight: 600; } +.font-extrabold{ + font-weight: 800; +} + +.font-normal{ + font-weight: 400; +} + .font-light{ font-weight: 300; } @@ -1026,8 +2055,8 @@ video { font-weight: 100; } -.capitalize{ - text-transform: capitalize; +.uppercase{ + text-transform: uppercase; } .leading-normal{ @@ -1038,12 +2067,24 @@ video { line-height: 1; } -.tracking-widest{ - letter-spacing: 0.1em; +.leading-tight{ + line-height: 1.25; +} + +.leading-relaxed{ + line-height: 1.625; +} + +.leading-8{ + line-height: 2rem; +} + +.leading-6{ + line-height: 1.5rem; } -.tracking-wide{ - letter-spacing: 0.025em; +.tracking-tight{ + letter-spacing: -0.025em; } .text-white{ @@ -1061,6 +2102,31 @@ video { color: rgb(79 134 103 / var(--tw-text-opacity)); } +.text-\[\#52B17C\]{ + --tw-text-opacity: 1; + color: rgb(82 177 124 / var(--tw-text-opacity)); +} + +.text-secondary-100{ + --tw-text-opacity: 1; + color: rgb(85 85 76 / var(--tw-text-opacity)); +} + +.text-afribook{ + --tw-text-opacity: 1; + color: rgb(108 111 109 / var(--tw-text-opacity)); +} + +.text-\[\#4B5563\]{ + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity)); +} + +.text-modal{ + --tw-text-opacity: 1; + color: rgb(102 112 133 / var(--tw-text-opacity)); +} + .text-body{ --tw-text-opacity: 1; color: rgb(47 52 49 / var(--tw-text-opacity)); @@ -1076,14 +2142,56 @@ video { color: rgb(191 94 94 / var(--tw-text-opacity)); } -.placeholder-white::-moz-placeholder{ - --tw-placeholder-opacity: 1; - color: rgb(255 255 255 / var(--tw-placeholder-opacity)); +.text-\[\#595E5B\]{ + --tw-text-opacity: 1; + color: rgb(89 94 91 / var(--tw-text-opacity)); +} + +.text-\[\#FF9600\]{ + --tw-text-opacity: 1; + color: rgb(255 150 0 / var(--tw-text-opacity)); +} + +.text-helper{ + --tw-text-opacity: 1; + color: rgb(89 94 91 / var(--tw-text-opacity)); +} + +.text-icon{ + --tw-text-opacity: 1; + color: rgb(108 111 109 / var(--tw-text-opacity)); +} + +.text-semantics{ + --tw-text-opacity: 1; + color: rgb(132 11 11 / var(--tw-text-opacity)); +} + +.text-gray-50{ + --tw-text-opacity: 1; + color: rgb(70 70 70 / var(--tw-text-opacity)); +} + +.text-black{ + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} + +.text-\[\#050B08\]{ + --tw-text-opacity: 1; + color: rgb(5 11 8 / var(--tw-text-opacity)); +} + +.underline{ + text-decoration-line: underline; +} + +.opacity-20{ + opacity: 0.2; } -.placeholder-white::placeholder{ - --tw-placeholder-opacity: 1; - color: rgb(255 255 255 / var(--tw-placeholder-opacity)); +.opacity-50{ + opacity: 0.5; } .shadow{ @@ -1104,10 +2212,17 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.backdrop-blur-sm{ - --tw-backdrop-blur: blur(4px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +.shadow-custom{ + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1), + 0 -5px 15px -3px rgb(0 0 0 / 0.1), 0 -4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color), 0 -5px 15px -3px var(--tw-shadow-color), 0 -4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-lg{ + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .transition-transform{ @@ -1130,12 +2245,6 @@ video { transition-duration: 150ms; } -.transition-colors{ - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - .duration-150{ transition-duration: 150ms; } @@ -1144,14 +2253,22 @@ video { transition-duration: 75ms; } -.duration-200{ - transition-duration: 200ms; -} - .ease-in{ transition-timing-function: cubic-bezier(0.4, 0, 1, 1); } +:root { + --Iconsax-Size:20px; +} + +.main-nav .iconsax { + --Iconsax-Color:#FFF; +} + +.nav-active .iconsax { + --Iconsax-Color:#2C6E49; +} + html { font-family: 'Montserrat', sans-serif; } @@ -1165,37 +2282,110 @@ h6 { font-weight: 700; } -.nav-active{ - border-left-width: 8px; - border-style: solid; - --tw-border-opacity: 1; - border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); - --tw-bg-opacity: 1; - background-color: rgb(213 226 219 / var(--tw-bg-opacity)); - --tw-text-opacity: 1; - color: rgb(44 110 73 / var(--tw-text-opacity)); +.poppins { + font-family: 'Poppins', sans-serif; +} + +.nav-active{ + border-left-width: 8px; + border-style: solid; + --tw-border-opacity: 1; + border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(213 226 219 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(44 110 73 / var(--tw-text-opacity)); +} + +.main-nav > *:hover{ + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.main-nav > *:hover .iconsax { + --Iconsax-Color:#2C6E49; +} + +.main-nav > *:hover{ + border-left-width: 8px; + border-style: solid; + --tw-border-opacity: 1; + border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(213 226 219 / var(--tw-bg-opacity)); + --tw-text-opacity: 1; + color: rgb(44 110 73 / var(--tw-text-opacity)); +} + +.focus-within\:border-primary-50:focus-within{ + --tw-border-opacity: 1; + border-color: rgb(79 134 103 / var(--tw-border-opacity)); +} + +.hover\:-translate-y-2:hover{ + --tw-translate-y: -0.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.hover\:cursor-pointer:hover{ + cursor: pointer; +} + +.hover\:border-primary-50:hover{ + --tw-border-opacity: 1; + border-color: rgb(79 134 103 / var(--tw-border-opacity)); +} + +.hover\:border-primary-90:hover{ + --tw-border-opacity: 1; + border-color: rgb(22 55 37 / var(--tw-border-opacity)); +} + +.hover\:bg-primary-70:hover{ + --tw-bg-opacity: 1; + background-color: rgb(37 92 61 / var(--tw-bg-opacity)); +} + +.hover\:text-primary-90:hover{ + --tw-text-opacity: 1; + color: rgb(22 55 37 / var(--tw-text-opacity)); +} + +.hover\:text-opacity-80:hover{ + --tw-text-opacity: 0.8; +} + +.hover\:underline:hover{ + text-decoration-line: underline; +} + +.hover\:opacity-60:hover{ + opacity: 0.6; +} + +.hover\:shadow-lg:hover{ + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.main-nav > *:hover{ - border-left-width: 8px; - border-style: solid; - --tw-border-opacity: 1; - border-left-color: rgb(37 92 61 / var(--tw-border-opacity)); - --tw-bg-opacity: 1; - background-color: rgb(213 226 219 / var(--tw-bg-opacity)); - --tw-text-opacity: 1; - color: rgb(44 110 73 / var(--tw-text-opacity)); - transition-duration: 300ms; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +.hover\:shadow-2xl:hover{ + --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); + --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.focus-within\:border-primary-50:focus-within{ - --tw-border-opacity: 1; - border-color: rgb(79 134 103 / var(--tw-border-opacity)); +.focus\:z-10:focus{ + z-index: 10; } -.hover\:cursor-pointer:hover{ - cursor: pointer; +.focus\:border-none:focus{ + border-style: none; +} + +.focus\:bg-primary-10:focus{ + --tw-bg-opacity: 1; + background-color: rgb(213 226 219 / var(--tw-bg-opacity)); } .focus\:outline-none:focus{ @@ -1203,14 +2393,16 @@ h6 { outline-offset: 2px; } -.focus\:ring:focus{ +.focus\:ring-2:focus{ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } -.focus\:ring-opacity-40:focus{ - --tw-ring-opacity: 0.4; +.focus\:ring-4:focus{ + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .focus-visible\:border-primary-50:focus-visible{ @@ -1228,6 +2420,20 @@ h6 { } @media (prefers-color-scheme: dark){ + .dark\:bg-opacity-80{ + --tw-bg-opacity: 0.8; + } + + .dark\:text-white{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + + .dark\:hover\:text-white:hover{ + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + .group:hover .dark\:group-hover\:text-white{ --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); @@ -1235,37 +2441,53 @@ h6 { } @media (min-width: 640px){ - .sm\:-mx-2{ - margin-left: -0.5rem; - margin-right: -0.5rem; + .sm\:mx-auto{ + margin-left: auto; + margin-right: auto; + } + + .sm\:ml-0{ + margin-left: 0px; + } + + .sm\:mt-0{ + margin-top: 0px; } - .sm\:mx-2{ - margin-left: 0.5rem; - margin-right: 0.5rem; + .sm\:flex{ + display: flex; + } + + .sm\:h-9{ + height: 2.25rem; } .sm\:h-96{ height: 24rem; } - .sm\:flex-row{ - flex-direction: row; + .sm\:grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .sm\:items-center{ + align-items: center; } .sm\:justify-center{ justify-content: center; } - .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); + .sm\:justify-between{ + justify-content: space-between; } - .sm\:px-6{ - padding-left: 1.5rem; - padding-right: 1.5rem; + .sm\:gap-6{ + gap: 1.5rem; + } + + .sm\:p-6{ + padding: 1.5rem; } .sm\:py-16{ @@ -1273,27 +2495,281 @@ h6 { padding-bottom: 4rem; } + .sm\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .sm\:text-left{ + text-align: left; + } + + .sm\:text-center{ + text-align: center; + } + .sm\:text-sm{ font-size: 0.875rem; line-height: 1.25rem; } - .sm\:text-5xl{ - font-size: 3rem; - line-height: 1; + .sm\:text-xl{ + font-size: 1.25rem; + line-height: 1.75rem; + } + + .sm\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } + + .sm\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } + + .sm\:leading-relaxed{ + line-height: 1.625; } } @media (min-width: 768px){ + .md\:inset-0{ + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + } + + .md\:col-span-4{ + grid-column: span 4 / span 4; + } + .md\:ml-0{ margin-left: 0px; } + .md\:mb-0{ + margin-bottom: 0px; + } + + .md\:ml-64{ + margin-left: 16rem; + } + + .md\:mt-6{ + margin-top: 1.5rem; + } + + .md\:ml-24{ + margin-left: 6rem; + } + + .md\:mt-10{ + margin-top: 2.5rem; + } + + .md\:mr-4{ + margin-right: 1rem; + } + + .md\:ml-6{ + margin-left: 1.5rem; + } + + .md\:mr-12{ + margin-right: 3rem; + } + + .md\:mt-0{ + margin-top: 0px; + } + + .md\:ml-10{ + margin-left: 2.5rem; + } + + .md\:ml-12{ + margin-left: 3rem; + } + + .md\:mb-4{ + margin-bottom: 1rem; + } + + .md\:block{ + display: block; + } + + .md\:flex{ + display: flex; + } + + .md\:h-auto{ + height: auto; + } + + .md\:h-full{ + height: 100%; + } + + .md\:h-fit{ + height: -moz-fit-content; + height: fit-content; + } + + .md\:w-48{ + width: 12rem; + } + + .md\:w-1\/2{ + width: 50%; + } + + .md\:w-auto{ + width: auto; + } + + .md\:w-1\/3{ + width: 33.333333%; + } + + .md\:w-full{ + width: 100%; + } + + .md\:w-2\/5{ + width: 40%; + } + + .md\:w-3\/5{ + width: 60%; + } + + .md\:w-fit{ + width: -moz-fit-content; + width: fit-content; + } + + .md\:w-\[39\%\]{ + width: 39%; + } + + .md\:w-\[45\%\]{ + width: 45%; + } + + .md\:max-w-md{ + max-width: 28rem; + } + .md\:translate-x-0{ --tw-translate-x: 0px; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } + .md\:flex-row{ + flex-direction: row; + } + + .md\:flex-nowrap{ + flex-wrap: nowrap; + } + + .md\:items-end{ + align-items: flex-end; + } + + .md\:items-center{ + align-items: center; + } + + .md\:justify-start{ + justify-content: flex-start; + } + + .md\:justify-between{ + justify-content: space-between; + } + + .md\:space-y-0 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); + } + + .md\:space-x-12 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(3rem * var(--tw-space-x-reverse)); + margin-left: calc(3rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:space-x-2 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:rounded-none{ + border-radius: 0px; + } + + .md\:rounded-l-lg{ + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; + } + + .md\:p-11{ + padding: 2.75rem; + } + + .md\:py-2{ + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + + .md\:px-5{ + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .md\:px-20{ + padding-left: 5rem; + padding-right: 5rem; + } + + .md\:pl-2{ + padding-left: 0.5rem; + } + + .md\:pb-14{ + padding-bottom: 3.5rem; + } + + .md\:text-start{ + text-align: start; + } + + .md\:text-5xl{ + font-size: 3rem; + line-height: 1; + } + + .md\:text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; + } + + .md\:text-3xl{ + font-size: 1.875rem; + line-height: 2.25rem; + } + + .md\:text-base{ + font-size: 1rem; + line-height: 1.5rem; + } + .md\:shadow{ --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); @@ -1302,10 +2778,39 @@ h6 { } @media (min-width: 1024px){ + .lg\:col-span-7{ + grid-column: span 7 / span 7; + } + + .lg\:col-span-5{ + grid-column: span 5 / span 5; + } + + .lg\:col-span-2{ + grid-column: span 2 / span 2; + } + + .lg\:my-8{ + margin-top: 2rem; + margin-bottom: 2rem; + } + + .lg\:mt-0{ + margin-top: 0px; + } + + .lg\:mb-8{ + margin-bottom: 2rem; + } + .lg\:flex{ display: flex; } + .lg\:hidden{ + display: none; + } + .lg\:h-4\/5{ height: 80%; } @@ -1314,18 +2819,60 @@ h6 { height: 100%; } + .lg\:w-auto{ + width: auto; + } + .lg\:w-1\/2{ width: 50%; } + .lg\:w-1\/3{ + width: 33.333333%; + } + + .lg\:w-\[512px\]{ + width: 512px; + } + .lg\:max-w-full{ max-width: 100%; } + .lg\:grid-cols-12{ + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .lg\:grid-cols-4{ + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .lg\:grid-cols-2{ + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .lg\:grid-cols-3{ + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .lg\:flex-row{ + flex-direction: row; + } + .lg\:items-center{ align-items: center; } + .lg\:gap-8{ + gap: 2rem; + } + + .lg\:space-x-8 > :not([hidden]) ~ :not([hidden]){ + --tw-space-x-reverse: 0; + margin-right: calc(2rem * var(--tw-space-x-reverse)); + margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse))); + } + .lg\:rounded-b-none{ border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; @@ -1336,18 +2883,52 @@ h6 { border-bottom-right-radius: 0.25rem; } + .lg\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .lg\:py-16{ + padding-top: 4rem; + padding-bottom: 4rem; + } + + .lg\:px-4{ + padding-left: 1rem; + padding-right: 1rem; + } + .lg\:px-8{ padding-left: 2rem; padding-right: 2rem; } - .lg\:text-7xl{ - font-size: 4.5rem; - line-height: 1; + .lg\:pl-24{ + padding-left: 6rem; } - .lg\:text-lg{ - font-size: 1.125rem; + .lg\:pt-8{ + padding-top: 2rem; + } + + .lg\:text-xl{ + font-size: 1.25rem; line-height: 1.75rem; } + + .lg\:text-2xl{ + font-size: 1.5rem; + line-height: 2rem; + } } + +@media (min-width: 1280px){ + .xl\:gap-0{ + gap: 0px; + } + + .xl\:text-6xl{ + font-size: 3.75rem; + line-height: 1; + } +} \ No newline at end of file diff --git a/public/images/.DS_Store b/public/images/.DS_Store index 4812f54..c7d048e 100644 Binary files a/public/images/.DS_Store and b/public/images/.DS_Store differ diff --git a/public/images/404.png b/public/images/404.png new file mode 100644 index 0000000..eff6cd5 Binary files /dev/null and b/public/images/404.png differ diff --git a/public/images/accept.svg b/public/images/accept.svg new file mode 100644 index 0000000..cf70eda --- /dev/null +++ b/public/images/accept.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/anxiety.svg b/public/images/anxiety.svg new file mode 100644 index 0000000..ad753c2 --- /dev/null +++ b/public/images/anxiety.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/appointments.svg b/public/images/appointments.svg new file mode 100644 index 0000000..91ac7bc --- /dev/null +++ b/public/images/appointments.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/blog-smile.png b/public/images/blog-smile.png new file mode 100644 index 0000000..6c6ae92 Binary files /dev/null and b/public/images/blog-smile.png differ diff --git a/public/images/blog.png b/public/images/blog.png new file mode 100644 index 0000000..8bfd486 Binary files /dev/null and b/public/images/blog.png differ diff --git a/public/images/cancel.svg b/public/images/cancel.svg new file mode 100644 index 0000000..ad4211b --- /dev/null +++ b/public/images/cancel.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/firstcard-down12.svg b/public/images/card-lines/firstcard-down12.svg new file mode 100755 index 0000000..cb45ed2 --- /dev/null +++ b/public/images/card-lines/firstcard-down12.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/firstcard-down13.svg b/public/images/card-lines/firstcard-down13.svg new file mode 100755 index 0000000..889d454 --- /dev/null +++ b/public/images/card-lines/firstcard-down13.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/firstcard-up12.svg b/public/images/card-lines/firstcard-up12.svg new file mode 100644 index 0000000..0fb70a5 --- /dev/null +++ b/public/images/card-lines/firstcard-up12.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/firstcard-up13.svg b/public/images/card-lines/firstcard-up13.svg new file mode 100644 index 0000000..b4c27b6 --- /dev/null +++ b/public/images/card-lines/firstcard-up13.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/secondcard-down12.svg b/public/images/card-lines/secondcard-down12.svg new file mode 100644 index 0000000..ce47b8e --- /dev/null +++ b/public/images/card-lines/secondcard-down12.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/secondcard-down13.svg b/public/images/card-lines/secondcard-down13.svg new file mode 100644 index 0000000..c01fe22 --- /dev/null +++ b/public/images/card-lines/secondcard-down13.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/thirdcard-down12.svg b/public/images/card-lines/thirdcard-down12.svg new file mode 100644 index 0000000..beef291 --- /dev/null +++ b/public/images/card-lines/thirdcard-down12.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/card-lines/thirdcard-down13.svg b/public/images/card-lines/thirdcard-down13.svg new file mode 100644 index 0000000..05fffac --- /dev/null +++ b/public/images/card-lines/thirdcard-down13.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/confirm.svg b/public/images/confirm.svg new file mode 100644 index 0000000..cf70eda --- /dev/null +++ b/public/images/confirm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/danny.png b/public/images/danny.png new file mode 100644 index 0000000..46586dc Binary files /dev/null and b/public/images/danny.png differ diff --git a/public/images/dashboard_chart.svg b/public/images/dashboard_chart.svg new file mode 100644 index 0000000..d2f71f9 --- /dev/null +++ b/public/images/dashboard_chart.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/earnings.svg b/public/images/earnings.svg new file mode 100644 index 0000000..e07a233 --- /dev/null +++ b/public/images/earnings.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/images/empty-cards.svg b/public/images/empty-cards.svg new file mode 100644 index 0000000..4a77c65 --- /dev/null +++ b/public/images/empty-cards.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/empty-state.svg b/public/images/empty-state.svg new file mode 100644 index 0000000..f8df00e --- /dev/null +++ b/public/images/empty-state.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/eye.svg b/public/images/eye.svg new file mode 100755 index 0000000..d49a141 --- /dev/null +++ b/public/images/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/friendship.svg b/public/images/friendship.svg new file mode 100644 index 0000000..7f44e52 --- /dev/null +++ b/public/images/friendship.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/hassan.png b/public/images/hassan.png new file mode 100644 index 0000000..284f356 Binary files /dev/null and b/public/images/hassan.png differ diff --git a/public/images/hassanat.png b/public/images/hassanat.png new file mode 100644 index 0000000..1f750b1 Binary files /dev/null and b/public/images/hassanat.png differ diff --git a/public/images/home-therapy.png b/public/images/home-therapy.png new file mode 100644 index 0000000..334e1c3 Binary files /dev/null and b/public/images/home-therapy.png differ diff --git a/public/images/home-tip-1.png b/public/images/home-tip-1.png new file mode 100644 index 0000000..dab1309 Binary files /dev/null and b/public/images/home-tip-1.png differ diff --git a/public/images/home-tip-2.png b/public/images/home-tip-2.png new file mode 100644 index 0000000..a879cb6 Binary files /dev/null and b/public/images/home-tip-2.png differ diff --git a/public/images/home-tip-3.png b/public/images/home-tip-3.png new file mode 100644 index 0000000..cbe2345 Binary files /dev/null and b/public/images/home-tip-3.png differ diff --git a/public/images/macbook-laptop.png b/public/images/macbook-laptop.png new file mode 100644 index 0000000..cc8c1a5 Binary files /dev/null and b/public/images/macbook-laptop.png differ diff --git a/public/images/mental-health-bro.png b/public/images/mental-health-bro.png new file mode 100644 index 0000000..2dec412 Binary files /dev/null and b/public/images/mental-health-bro.png differ diff --git a/public/images/no_appointments_bg.svg b/public/images/no_appointments_bg.svg new file mode 100644 index 0000000..b90b396 --- /dev/null +++ b/public/images/no_appointments_bg.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/patients.svg b/public/images/patients.svg new file mode 100644 index 0000000..9a471c7 --- /dev/null +++ b/public/images/patients.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/pending.svg b/public/images/pending.svg new file mode 100644 index 0000000..8ff80dd --- /dev/null +++ b/public/images/pending.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/posi.png b/public/images/posi.png new file mode 100644 index 0000000..e7f5703 Binary files /dev/null and b/public/images/posi.png differ diff --git a/public/images/profile_picture.svg b/public/images/profile_picture.svg new file mode 100644 index 0000000..2077b56 --- /dev/null +++ b/public/images/profile_picture.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/reg-banner-1.png b/public/images/reg-banner-1.png new file mode 100644 index 0000000..adffbe3 Binary files /dev/null and b/public/images/reg-banner-1.png differ diff --git a/public/images/reg-banner-2.jpg b/public/images/reg-banner-2.jpg new file mode 100644 index 0000000..55acf35 Binary files /dev/null and b/public/images/reg-banner-2.jpg differ diff --git a/public/images/reg-banner-3.jpg b/public/images/reg-banner-3.jpg new file mode 100644 index 0000000..28c344d Binary files /dev/null and b/public/images/reg-banner-3.jpg differ diff --git a/public/images/reg-banner.png b/public/images/reg-banner.png deleted file mode 100644 index 3a3c5ed..0000000 Binary files a/public/images/reg-banner.png and /dev/null differ diff --git a/public/images/reg-banner1.png b/public/images/reg-banner1.png deleted file mode 100644 index 1e69a32..0000000 Binary files a/public/images/reg-banner1.png and /dev/null differ diff --git a/public/images/reg-banner2.png b/public/images/reg-banner2.png deleted file mode 100644 index f2bd270..0000000 Binary files a/public/images/reg-banner2.png and /dev/null differ diff --git a/public/images/search_icon.svg b/public/images/search_icon.svg new file mode 100644 index 0000000..c6aa9c1 --- /dev/null +++ b/public/images/search_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/selfcare.svg b/public/images/selfcare.svg new file mode 100644 index 0000000..c307ca9 --- /dev/null +++ b/public/images/selfcare.svg @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/selfesteem.svg b/public/images/selfesteem.svg new file mode 100644 index 0000000..6625edc --- /dev/null +++ b/public/images/selfesteem.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/selfie_icon.svg b/public/images/selfie_icon.svg new file mode 100644 index 0000000..8b44719 --- /dev/null +++ b/public/images/selfie_icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/images/selfie_img.svg b/public/images/selfie_img.svg new file mode 100644 index 0000000..0d4d1e9 --- /dev/null +++ b/public/images/selfie_img.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/images/selfie_success.svg b/public/images/selfie_success.svg new file mode 100644 index 0000000..a897bfb --- /dev/null +++ b/public/images/selfie_success.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/stress_management.svg b/public/images/stress_management.svg new file mode 100644 index 0000000..a3fb40b --- /dev/null +++ b/public/images/stress_management.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/sucessful-icon.svg b/public/images/sucessful-icon.svg new file mode 100644 index 0000000..39e6063 --- /dev/null +++ b/public/images/sucessful-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/trauma.svg b/public/images/trauma.svg new file mode 100644 index 0000000..2cbf78e --- /dev/null +++ b/public/images/trauma.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/upload_icon.svg b/public/images/upload_icon.svg new file mode 100644 index 0000000..cbe90ac --- /dev/null +++ b/public/images/upload_icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/images/user-1.png b/public/images/user-1.png new file mode 100644 index 0000000..9efddf1 Binary files /dev/null and b/public/images/user-1.png differ diff --git a/public/images/user-2.png b/public/images/user-2.png new file mode 100644 index 0000000..e8296cf Binary files /dev/null and b/public/images/user-2.png differ diff --git a/public/images/user-3.png b/public/images/user-3.png new file mode 100644 index 0000000..856f1ce Binary files /dev/null and b/public/images/user-3.png differ diff --git a/public/images/user-4.png b/public/images/user-4.png new file mode 100644 index 0000000..78b1d0b Binary files /dev/null and b/public/images/user-4.png differ diff --git a/public/images/user-5.png b/public/images/user-5.png new file mode 100644 index 0000000..bd51d9b Binary files /dev/null and b/public/images/user-5.png differ diff --git a/public/images/user-6.png b/public/images/user-6.png new file mode 100644 index 0000000..1d6421e Binary files /dev/null and b/public/images/user-6.png differ diff --git a/public/images/user-7.png b/public/images/user-7.png new file mode 100644 index 0000000..51a0f9d Binary files /dev/null and b/public/images/user-7.png differ diff --git a/public/images/user-8.png b/public/images/user-8.png new file mode 100644 index 0000000..89e1e9c Binary files /dev/null and b/public/images/user-8.png differ diff --git a/public/images/user-cirlce-add.svg b/public/images/user-cirlce-add.svg new file mode 100755 index 0000000..f6d95e6 --- /dev/null +++ b/public/images/user-cirlce-add.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/images/view.svg b/public/images/view.svg new file mode 100644 index 0000000..c0ef207 --- /dev/null +++ b/public/images/view.svg @@ -0,0 +1,4 @@ + + + + diff --git a/routes/therapists.js b/routes/therapists.js new file mode 100644 index 0000000..8b991a2 --- /dev/null +++ b/routes/therapists.js @@ -0,0 +1,36 @@ +const express = require("express"); +const router = express.Router(); + +router.get("/login", (req, res) => { + res.render("pages/th/login"); +}); + +router.get("/register", (req, res) => { + res.render("pages/th/register"); +}); + +router.get("/dashboard", (req, res) => { + res.render("pages/th/dashboard"); +}); + +router.get("/appointments", (req, res) => { + res.render("pages/th/appointments"); +}); + +router.get("/patients", (req, res) => { + res.render("pages/th/patients"); +}); + +router.get("/calendar", (req, res) => { + res.render("pages/th/calendar"); + +}); + +router.get("/chat", (req, res) => { + res.render("pages/th/chat"); +}); +router.get("/profile", (req, res) => { + res.render("pages/th/profile"); +}); + +module.exports = router; diff --git a/routes/user.js b/routes/user.js index 98edb7a..3b7e243 100644 --- a/routes/user.js +++ b/routes/user.js @@ -2,23 +2,146 @@ const express = require("express"); const router = express.Router(); const bcrypt = require("bcrypt"); const User = require("../database/models").User; +const MentalHealthTip = require("../database/models").MentalHealthTip; +const Blog = require("../database/models").blog; +let session; +//GET REQUESTS router.get("/register", (req, res) => { - res.render("pages/users/register"); + session = req.session; + if (session.userID) { + res.redirect("/user/home"); + } else { + res.render("pages/users/register"); + } }); router.get("/login", (req, res) => { - res.render("pages/users/login"); + session = req.session; + if (session.userID) { + res.redirect("/user/home"); + } else { + res.render("pages/users/login"); + } }); router.get("/reset", (req, res) => { res.render("pages/users/reset"); }); -router.get("/home", (req, res) => { - res.render("pages/users/home"); +router.get("/home", async (req, res) => { + session = req.session; + if (session.userID) { + //get all the users details excluding the + //password, admin status, savedCards and email + const userDetails = await User.findOne( + { _id: session.userID }, + { password: 0, admin: 0, savedCardsId: 0, email: 0 } + ); + res.render("pages/users/home", { + userDetails, + }); + } else { + res.redirect("/user/login"); + } +}); + +router.get("/self-affirmation", async (req, res) => { + session = req.session; + if (session.userID) { + //get all the users details excluding the + //password, admin status, savedCards and email + const userDetails = await User.findOne( + { _id: session.userID }, + { password: 0, admin: 0, savedCardsId: 0, email: 0 } + ); + res.render("pages/users/self-affirmation", { + userDetails, + }); + } else { + res.redirect("/user/login"); + } +}); + +router.get("/mental-health-tips", async (req, res) => { + session = req.session; + if (session.userID) { + //get all the users details excluding the + //password, admin status, savedCards and email + const userDetails = await User.findOne( + { _id: session.userID }, + { password: 0, admin: 0, savedCardsId: 0, email: 0 } + ); + res.render("pages/users/mental-health-tips", { + userDetails, + }); + } else { + res.redirect("/user/login"); + } +}); + +router.get("/forum", async (req, res) => { + session = req.session; + if (session.userID) { + //get all the users details excluding the + //password, admin status, savedCards and email + const userDetails = await User.findOne( + { _id: session.userID }, + { password: 0, admin: 0, savedCardsId: 0, email: 0 } + ); + res.render("pages/users/forum", { + userDetails, + }); + } else { + res.redirect("/user/login"); + } }); +router.get("/music", (req, res) => { + res.render("pages/users/music"); +}); + +router.get("/blog", async (req, res) => { + session = req.session; + if (session.userID) { + //get all the users details excluding the + //password, admin status, savedCards and email + const userDetails = await User.findOne( + { _id: session.userID }, + { password: 0, admin: 0, savedCardsId: 0, email: 0 } + ); + const blogPosts = await Blog.find(); + + //pagination will come later + res.render("pages/users/blog", { userDetails, blogPosts }); + } else { + res.redirect("/user/login"); + } +}); + +router.get("/blog/:id", async (req, res) => { + try { + const blogItem = await Blog.findById(req.params.id); + if (blogItem) { + res.render("templates/blog", {blogItem}); //the page that'll display a single blog post + } else { + //the ID Is invalid too + } + } catch (error) { + // ID in the request is invalid, an error page here + } +}); + +router.get("/meet-a-therapist", (req, res) => { + res.render("pages/users/meet-a-therapist") +}) + +router.get("/logout", (req, res) => { + req.session.destroy(); + res.redirect("/user/login"); +}); + +//POST REQUESTS router.post("/register", async (req, res) => { const { firstName, lastName, email, password } = req.body; @@ -51,6 +174,8 @@ router.post("/register", async (req, res) => { } else { //user saved //redirect to homepage + session = req.session; + session.userID = newUserDoc._id; res.redirect("/user/home"); } }); @@ -71,8 +196,11 @@ router.post("/login", async (req, res) => { if (email !== "" && password !== "") { const user = await User.findOne({ email }); if (user) { - if (user.password === password) { + //comparing the hashed password with the submitted password + if (await bcrypt.compare(password, user.password)) { //valid details + session = req.session; + session.userID = user._id; res.redirect("/user/home"); } else { //no record with the submitted email @@ -95,26 +223,4 @@ router.post("/login", async (req, res) => { } }); -router.get("/home", (req, res) => { - res.render("pages/users/home"); -}); - -router.get("/self-affirmation", (req, res) => { - res.render("pages/users/self-affirmation") -}); - -router.get("/mental-health-tips", (req, res) => { - res.render("pages/users/mental-health-tips") -}); -router.get("/forum", (req, res) => { - res.render("pages/users/forum") -}); -router.get("/music", (req, res) => { - res.render("pages/users/music") -}); -router.get("/blog", (req, res) => { - res.render("pages/users/blog") -}); -router.get("/logout", (req, res) => {}); - module.exports = router; diff --git a/tailwind.config.js b/tailwind.config.js index 606ae6a..ae04b29 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,8 +2,15 @@ module.exports = { content: ["./views/**/*.ejs"], theme: { - extend: {}, + extend: { + boxShadow:{ + 'custom': `0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1), + 0 -5px 15px -3px rgb(0 0 0 / 0.1), 0 -4px 6px -4px rgb(0 0 0 / 0.1)` + } + }, colors: { + "primary-110":"#09160F", + "primary-100":"#0F2518", "primary-90":"#163725", "primary-70":"#255C3D", "primary-60":"#2C6E49", @@ -11,6 +18,8 @@ module.exports = { "primary-40":"#729E86", "primary-10":"#D5E2DB", "secondary": "#E5E5E5", + "secondary-100": "#55554C", + "afribook": "#6C6F6D", "text-title": "#050B08", "body": "#2F3431", "helper": "#595E5B", @@ -18,7 +27,11 @@ module.exports = { "icon":"#6C6F6D", "gray-50": "#464646", "gray-40": "#585858", - "error": "#BF5E5E" + "error": "#BF5E5E", + "card-border": "#E6F6ED", + "semantics": "#840B0B", + "modal": "#667085", + "black": "#000000" }, fontFamily: { diff --git a/views/pages/design.ejs b/views/pages/design.ejs index 55bf661..32f075d 100644 --- a/views/pages/design.ejs +++ b/views/pages/design.ejs @@ -56,7 +56,7 @@ Forum - + Music diff --git a/views/pages/errorPages/404.ejs b/views/pages/errorPages/404.ejs deleted file mode 100644 index 638b3d0..0000000 --- a/views/pages/errorPages/404.ejs +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Document - - - This is the 404 page - - diff --git a/views/pages/index.ejs b/views/pages/index.ejs index e7f1e72..73cf10b 100644 --- a/views/pages/index.ejs +++ b/views/pages/index.ejs @@ -1,35 +1,433 @@ - - - - CONSUELO - + + + + WELCOME | CONSUELO + + + + + + + - -
-
-
-

The Consuelo

-

Comming Soon

- -

You can subscribe to our newsletter we will let you know when we are - up

- -
- - - + +
+
+ + +
+
+
+
+

Affordable mental health care for everyone

+

Your go-to solution to help improve your mental health and growth.

+ + + Get Started + +
+ +
+
+
+ + +
+
+

Our amazing features

+

...providing solace and comfort to our users at scale.

+ +
+
+ + +
+ House +
+
+
+ + +
+
+ + +
+
+
+

+ We believe in healthy mental wellness, and the need to continually break the stigmas. +

+ +

+ Our goal is to help you improve your health and happiness. We're dedicated to walking this path with you. +

+ + +
+
+
+ + +
+
+
+

Meet Out Team

+

Our philosophy is simple — hire a team of diverse, passionate people and foster a culture that empowers you to do you best work.

+
+
+
+ hassanat-ceo + + +
+ +
+ hassanat-ceo + +
+ +

Olamiposi Oluwasexy

+
+ +

Product Manager

+
+
+ +
+ hassanat-ceo + +
+ +

Danny Ombeh

+
+ +

Product Designer

+
+
+ +
+ hassanat-ceo + +
+ +

Hassan Yahya

+
+ +

Software Engineer

+
+
+ +
+
+
+ + +
+
+

Hear from our users

+ +
+ + +
+
+ +
+

+ I loved using Consuelo, it helped me through my problems and now I’m healed +

+ +
Grace Alojore
+
+ +
+
+ + +
+
+

Read Our Latest

+ +
+
+ blog img + +
+ +

+ Smiling through the hardship +

+
+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae dolores, possimus pariatur animi olore sed nulla ipsum eveniet corporis quidem,lpa eius atque dignissimos. Molestias explicabo corporis voluptatem? +

+ +

blog / 3 mins read

+
+
+ + +
+ blog img + +
+ +

+ Smiling through the hardship +

+
+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae dolores, possimus pariatur animi olore sed nulla ipsum eveniet corporis quidem,lpa eius atque dignissimos. Molestias explicabo corporis voluptatem? +

+ +

blog / 3 mins read

+
+
+ +
+ blog img + +
+ +

+ Smiling through the hardship +

+
+ +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Recusandae dolores, possimus pariatur animi olore sed nulla ipsum eveniet corporis quidem,lpa eius atque dignissimos. Molestias explicabo corporis voluptatem? +

+ +

blog / 3 mins read

+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/views/pages/th/appointment.ejs b/views/pages/th/appointment.ejs new file mode 100644 index 0000000..700ebe8 --- /dev/null +++ b/views/pages/th/appointment.ejs @@ -0,0 +1,209 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+ + +
+
+ +

Appointments

+ +
+
    +
  • Name
  • +
  • Phone Number
  • +
  • Date
  • +
  • Time
  • +
  • Action
  • +
+
+ +
+ + empty files +

You currently have no appointments

+
+ + + +
+
+ + +
+

Profile

+
+
+ +

Hassanat Abubakar

+

Hassanatabubakar@gmail.com

+
+ + +
+
+
+
+
+ + \ No newline at end of file diff --git a/views/pages/th/appointments.ejs b/views/pages/th/appointments.ejs new file mode 100644 index 0000000..1c13ee6 --- /dev/null +++ b/views/pages/th/appointments.ejs @@ -0,0 +1,209 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+ + +
+
+ +

Appointments

+ +
+
    +
  • Name
  • +
  • Phone Number
  • +
  • Date
  • +
  • Time
  • +
  • Action
  • +
+
+ +
+ + empty files +

You currently have no appointments

+
+ + + +
+
+ + +
+

Profile

+
+
+ +

Hassanat Abubakar

+

Hassanatabubakar@gmail.com

+
+ + +
+
+
+
+
+ + \ No newline at end of file diff --git a/views/pages/th/calendar.ejs b/views/pages/th/calendar.ejs new file mode 100644 index 0000000..7fac0df --- /dev/null +++ b/views/pages/th/calendar.ejs @@ -0,0 +1,119 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + + + + diff --git a/views/pages/th/chat.ejs b/views/pages/th/chat.ejs new file mode 100644 index 0000000..58c1485 --- /dev/null +++ b/views/pages/th/chat.ejs @@ -0,0 +1,119 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + + + + diff --git a/views/pages/th/dashboard.ejs b/views/pages/th/dashboard.ejs new file mode 100644 index 0000000..5a40cf4 --- /dev/null +++ b/views/pages/th/dashboard.ejs @@ -0,0 +1,825 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + + +
+ + +
+ +
+

+ Your profile is incomplete. + + to verify your profile. +

+
+

Welcome back, Dr Hassy

+
+
+ +
+

Appointments

+

0

+
+
+
+ +
+

New Patients

+

0

+
+
+
+ +
+

Earnings

+

0

+
+
+
+
+ +
+ +
+

Upcoming Appointments

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone numberDateTimeActions
+ Farouk Muhammed + 0812787891901/12/202209:00-09:30 + + + +
+ Danny Ombeh + 0812787891901/12/202209:00-09:30 + + + +
+ Latifat Omobadan + 0812787891901/12/202209:00-09:30 + + + +
+ Hassanah Abubakar + 0812787891901/12/202209:00-09:30 + + + +
+ Oluwasexy Posi + 0812787891901/12/202209:00-09:30 + + + +
+ Oluwasexy Posi + 0812787891901/12/202209:00-09:30 + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/views/pages/th/login.ejs b/views/pages/th/login.ejs new file mode 100644 index 0000000..76fc2e2 --- /dev/null +++ b/views/pages/th/login.ejs @@ -0,0 +1,112 @@ + + + + + + + LOGIN | CONSUELO + + + + + + + + + +
+
+ + consuelo-logo + +

Consuelo

+
+
+ +
+
+
+

+ Sign into Consuelo +

+

You are one step towards getting better!

+ +

or

+
+
+
+ + +
+ +
+ + + +
+ +
+ +
+ + <% if (locals.error) { %> +

<%= error %>

+ <% } else {%> +

Password must be up to 7 characters

+ <%}%> +

+ By signing up, you agree to the + Terms of Service and + Privacy Policy. +

+
+ +
+

+ Don't have account? + Sign up +

+
+
+ +
+ Welcome +
+ +
+ + + + diff --git a/views/pages/th/patients.ejs b/views/pages/th/patients.ejs new file mode 100644 index 0000000..efab3d0 --- /dev/null +++ b/views/pages/th/patients.ejs @@ -0,0 +1,119 @@ + + + + + + + CONSUELO ~ DASHBOARD + + + + + + + + + + + + + + + + + diff --git a/views/pages/th/profile.ejs b/views/pages/th/profile.ejs new file mode 100644 index 0000000..ad1543f --- /dev/null +++ b/views/pages/th/profile.ejs @@ -0,0 +1,270 @@ + + + + + + + WELCOME | CONSUELO + + + + + + + + + +
+

click

+ + +
+

Complete your profile

+ +
+
+
+
+

Contact address

+

Please enter a residential/office address

+
+
+

pending

+
+
+
+ +
+
+
+ +
+
+
+
+

Phone Number & Email

+

Input a valid phone number

+
+
+

pending

+
+
+
+ + +
+
+
+ +
+
+
+
+

Role & Certificates

+

Lets us know you are a certified therapist

+
+
+

pending

+
+
+
+ + +
+
+ +
+
+
+ +
+
+
+
+

Take a selfie

+

Smile for the camera

+
+
+

pending

+
+
+ +
+ +
+
+
+ + + +
+ +
+
+
+
+

Phone Number & Email

+

Input a valid phone number

+
+
+

pending

+
+
+
+ + +
+
+
+ +
+
+
+
+

Role & Certificates

+

Lets us know you are a certified therapist

+
+
+

pending

+
+
+
+ + +
+
+ +
+
+
+ +
+
+
+
+

Take a selfie

+

Smile for the camera

+
+
+

pending

+
+
+ +
+ +
+
+
+ + + +
+ + + +
+ + + + + + + + diff --git a/views/pages/th/register.ejs b/views/pages/th/register.ejs new file mode 100644 index 0000000..f77ac21 --- /dev/null +++ b/views/pages/th/register.ejs @@ -0,0 +1,142 @@ + + + + + + + REGISTER | CONSUELO + + + + + + + + + +
+
+ + consuelo-logo + +

Consuelo

+
+
+ +
+
+
+

+ Create a new account +

+

You are one step towards getting better!

+ +

or

+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+
+ +
+ <% if (locals.error) { %> +

<%= error %>

+ <% } else { %> +

Password must be up to 7 characters

+ <%}%> +
+ +

+ By signing up, you agree to the + Terms of Service and + Privacy Policy. +

+
+ +
+

+ Already have an account? + Sign in +

+
+
+ +
+ Welcome +
+
+ + + + diff --git a/views/pages/users/blog.ejs b/views/pages/users/blog.ejs index dc319db..9954743 100644 --- a/views/pages/users/blog.ejs +++ b/views/pages/users/blog.ejs @@ -1,122 +1,240 @@ - - - - - CONSUÉLO ~ BLOG - - - - - - - - - - - - - -
- + + + + + + + + +
+ + +
+
+
+
+

+ Blog +

+

Our blog features different perspectives and insights on mental health issues and topics.

+
+ +
+ + + + + + + +
+
+ +
+
+ + + +
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+ +
+ + +
+ +
+ +
- +
- -
- - - - \ No newline at end of file + + diff --git a/views/pages/users/forum.ejs b/views/pages/users/forum.ejs index 37289d1..8460568 100644 --- a/views/pages/users/forum.ejs +++ b/views/pages/users/forum.ejs @@ -1,122 +1,280 @@ - - - - - CONSUÉLO ~ FORUM - - - - + + + + + CONSUELO ~ FORUM + + + + + + + + + + + +
+ - -
-
-
-
-

Welcome back, Hassy 💚

-

Your feelings are welcome here

-
- -
- - - - - - - -
- -
- - -
- main content here - - - -
- - - - -
- + + +
+
+
+ +
+ +
+
Hassy123
+

Posted on Sep, 22, 2022

+
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis + egestas blandit facilisi dolor velit orci ac lorem. Ultrices + netus convallis scelerisque nam. Ipsum nam vel... +

+ + +
+ +
+
+ +
+ +
+
Hassy123
+

Posted on Sep, 22, 2022

+
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis + egestas blandit facilisi dolor velit orci ac lorem. Ultrices + netus convallis scelerisque nam. Ipsum nam vel... +

+ + +
+ +
+ +
+ +
+
Hassy123
+

Posted on Sep, 22, 2022

+
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis + egestas blandit facilisi dolor velit orci ac lorem. Ultrices + netus convallis scelerisque nam. Ipsum nam vel... +

+ + +
+
+ +
+ +
+
Hassy123
+

Posted on Sep, 22, 2022

+
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis + egestas blandit facilisi dolor velit orci ac lorem. Ultrices + netus convallis scelerisque nam. Ipsum nam vel... +

+ + +
+ + + + + +
+ +
- +
- -
- - - - \ No newline at end of file + + + + diff --git a/views/pages/users/home.ejs b/views/pages/users/home.ejs index c25125b..0fc86c2 100644 --- a/views/pages/users/home.ejs +++ b/views/pages/users/home.ejs @@ -1,122 +1,294 @@ - - - - - CONSUÉLO ~ HOME - - - - - - - - - - + + + + + CONSUELO ~ HOME + + + + + + + + + + + + + +
+ + +
+
+
+
+

+ Welcome back, <%- userDetails.firstName %> 💚 +

+

Your feelings are welcome here

+
+ +
+ + + + + + + +
+
+ +
+
+
+

Meet a therapist

+ +
+
+ +
+ +
+

+ Book a session with a therapist +

+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam mattis est, ornare. +

+ +
+ Book now +
+
+
+
+ +
+
+

Meet a therapist

+ View more +
+ +
+
+ blog img + +
+

Breakups/Fallout

+ +

Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis.

+
+
+ +
+ blog img + +
+

Self-care

+ +

Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis.

+
+
+ +
+ blog img + +
+

Stress Management

+ +

Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis.

+
+
+
+
+ + + + +
+
+
+ + + + + + +
+
+
- +
- -
- - - - \ No newline at end of file + + diff --git a/views/pages/users/login.ejs b/views/pages/users/login.ejs index 5f734d4..24e2ef9 100644 --- a/views/pages/users/login.ejs +++ b/views/pages/users/login.ejs @@ -14,7 +14,7 @@ -
+
-
-
+
+
- + diff --git a/views/pages/users/meet-a-therapist.ejs b/views/pages/users/meet-a-therapist.ejs new file mode 100644 index 0000000..8d3df29 --- /dev/null +++ b/views/pages/users/meet-a-therapist.ejs @@ -0,0 +1,286 @@ + + + + + + + CONSUÉLO ~ MUSIC + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+

Meet a therapist

+

Book a session with a therapist today

+
+ +
+ + + + + + + +
+ +
+ + +
+

Therapist

+
+ + +
+
+ a therapist portrait +
+

Dr Hassy Posi

+

Therapist

+
+
+
+
+
+

Relish Therapy Org

+
+ + + + + +
+
+
+

Book a session

+
+
+
+
+ +
+
+ a therapist portrait +
+

Dr Hassy Posi

+

Therapist

+
+
+
+
+
+

Relish Therapy Org

+
+ + + + + +
+
+
+

Book a session

+
+
+
+
+ +
+
+ a therapist portrait +
+

Dr Hassy Posi

+

Therapist

+
+
+
+
+
+

Relish Therapy Org

+
+ + + + + +
+
+
+

Book a session

+
+
+
+
+ + +
+ +

Booked Sessions

+

No booked sessions

+ + +
+ + + + +
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/views/pages/users/mental-health-tips.ejs b/views/pages/users/mental-health-tips.ejs index d171af3..ed276a9 100644 --- a/views/pages/users/mental-health-tips.ejs +++ b/views/pages/users/mental-health-tips.ejs @@ -1,122 +1,264 @@ - - - - - CONSUÉLO ~ HEALTH TIPS - - - - - - - - - - - - - -
- + + + -
-
-
-
-

Welcome back, Hassy 💚

-

Your feelings are welcome here

+ + +
- - -
- main content here - - - + + + Logout + +
- - - - -
-
+
- -
- - - - \ No newline at end of file + + + + diff --git a/views/pages/users/music.ejs b/views/pages/users/music.ejs index 4576a28..29580a1 100644 --- a/views/pages/users/music.ejs +++ b/views/pages/users/music.ejs @@ -10,8 +10,12 @@ - + + + + + @@ -19,65 +23,83 @@
- -
+
diff --git a/views/pages/users/register.ejs b/views/pages/users/register.ejs index 4517cb6..3bcf0c7 100644 --- a/views/pages/users/register.ejs +++ b/views/pages/users/register.ejs @@ -23,8 +23,8 @@
-
-
+
+

Create a new account @@ -99,16 +99,17 @@ value="<%= (locals.formData) ? formData.password : ''%>" /> -
- - +
+
<% if (locals.error) { %>

<%= error %>

- <% }%> + <% } else { %> +

Password must be up to 7 characters

+ <%}%>

@@ -131,20 +132,11 @@

-
- Welcome +
+ Welcome
- + diff --git a/views/pages/users/reset.ejs b/views/pages/users/reset.ejs index 021aa06..d6b71f7 100644 --- a/views/pages/users/reset.ejs +++ b/views/pages/users/reset.ejs @@ -13,7 +13,7 @@ -
+
-
-
-
+
+
- + \ No newline at end of file diff --git a/views/pages/users/self-affirmation.ejs b/views/pages/users/self-affirmation.ejs index 4fe7185..c543b5f 100644 --- a/views/pages/users/self-affirmation.ejs +++ b/views/pages/users/self-affirmation.ejs @@ -1,88 +1,132 @@ - - - - - CONSUÉLO ~ HEALTH TIPS - - - - + + + + + CONSUÉLO ~ HEALTH TIPS + + + + - - + + + + - - - + + + + + + +
+ -
-
-
+
+
-

Welcome back, Hassy 💚

-

Your feelings are welcome here

+ +

Self Affirmation

+

Take a deep breath while you recite our Affirmation of the Day.

@@ -99,15 +143,125 @@
- main content here - - - + +
+

Daily affirmation

+
+
+
+ + + + +
+

I am a force that the world needs. I belong here.

+ +

Save Card

+
+
+
+
+
+ + +
+
+
+ + +
+
+
+ +
+
+ +
+
+

1 of 2

+
+
+ +
+ + + +
+

Saved Cards

+ + +
+ +
+
+

Flip Cards

+ + + + +
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+ + + + +
+

I am a force that the world needs. I belong here.

+ +

Unsave Card

+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+ +
+
+

1 of 2

+
+
+
+
- - - - +
- - + + + + + \ No newline at end of file diff --git a/views/pages/users/therapist.ejs b/views/pages/users/therapist.ejs new file mode 100644 index 0000000..873cfb3 --- /dev/null +++ b/views/pages/users/therapist.ejs @@ -0,0 +1,396 @@ + + + + + + + CONSUÉLO ~ MUSIC + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+

Meet a therapist

+

Book a session with a therapist today

+
+ +
+ + + + + + + +
+ +
+ + + + + +
+
+
+

Verify your identity

+

Verifiy your phone number to book a therapist

+
+ + + +
+ + +
+
+ +
+ + + + +
+
+ +
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/views/templates/403.ejs b/views/templates/403.ejs new file mode 100644 index 0000000..e3eb1e0 --- /dev/null +++ b/views/templates/403.ejs @@ -0,0 +1,129 @@ + + + + + + + FORBIDDEN! + + + + + + + + + + + + + +
+ + +
+
+

403

+

Forbidden

+

We’re sorry, you do not access to view this page

+ + + Go Back + +
+
+
+ + diff --git a/views/templates/404.ejs b/views/templates/404.ejs new file mode 100644 index 0000000..fe1bfea --- /dev/null +++ b/views/templates/404.ejs @@ -0,0 +1,127 @@ + + + + + + + 404! + + + + + + + + + + + + + + + + diff --git a/views/templates/blog.ejs b/views/templates/blog.ejs new file mode 100644 index 0000000..f5caf34 --- /dev/null +++ b/views/templates/blog.ejs @@ -0,0 +1,219 @@ + + + + + + + CONSUÉLO ~ BLOG + + + + + + + + + + + + + +
+ + +
+
+
+
+

+ Blog +

+

Our blog features different perspectives and insights on mental health issues and topics.

+
+ +
+ + + + + + + +
+
+ +
+
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+ + +
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+
+ blog img + +
+

Healing through music; the impact of music therapy on mental health

+ +
+

september 30, 2022

+

|

+

5 Mins Read

+

|

+

written by hussy

+
+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tortor massa erat aliquam lectus. Duis duis id nibh sem morbi leo eget egestas eget. Purus at tristique elementum commodo odio. Velit lacus, a, eros, suspendisse sit ipsum quis
read more...

+
+
+ +
+ + +
+ + +
+
+
+ +