From 4d0cfb8da1718ae8daddab694fc72ee99ad9d28f Mon Sep 17 00:00:00 2001 From: Code-250 Date: Sat, 19 Feb 2022 20:35:48 +0200 Subject: [PATCH 1/4] ccreate article integration --- admin/admin.html | 4 ++-- admin/js/blogs.js | 50 +++++++++++++++++++++++++++++++++++++-------- admin/js/model.js | 52 +++++++++++++++++++++++++++++++---------------- 3 files changed, 78 insertions(+), 28 deletions(-) diff --git a/admin/admin.html b/admin/admin.html index 9acaa8b..ff2953c 100644 --- a/admin/admin.html +++ b/admin/admin.html @@ -103,7 +103,7 @@

Create Article

Image Preview
- +
@@ -141,7 +141,7 @@

Update Article

Image Preview
- +
diff --git a/admin/js/blogs.js b/admin/js/blogs.js index e518216..294eed7 100644 --- a/admin/js/blogs.js +++ b/admin/js/blogs.js @@ -50,6 +50,25 @@ function update(id) { }; reader.readAsDataURL(imageUpdate.files[0]); }); + fetch(`https://my-brand-server.herokuapp.com/api/v1/posts/${id}`, { + method: "get", + headers: { + "content-Type": "application/json", + }, + }) + .then((res) => res.json()) + .then((data) => { + console.log(data, "======="); + const title = (document.querySelector(".title-update").value = + data.title); + const body = (document.querySelector( + ".detailed-update-description" + ).value = data.content); + const image = document + .querySelector("#image-preview-update") + .setAttribute("src", data.imageUrl); + }) + .catch((err) => console.log(err)); RetrievedObj.forEach((article) => { if (article.id == id) { const title = (document.querySelector(".title-update").value = @@ -111,12 +130,21 @@ function update(id) { const getData = JSON.parse(localStorage.getItem("blogList")); console.log(getData); let blogCardElement = document.querySelector(".section-content"); -getData?.forEach((element) => { - let body = element?.description.slice(0, 120) + "...."; - - blogCardElement.innerHTML += ` -
- +fetch("https://my-brand-server.herokuapp.com/api/v1/posts", { + method: "get", + headers: { + "content-Type": "application/json", + }, +}) + .then((res) => res.json()) + .then((data) => { + console.log(data); + data?.data?.forEach((element) => { + let body = element?.content?.slice(0, 120) + "...."; + const id = element.id + blogCardElement.innerHTML += ` +
+
importance of reading
@@ -131,11 +159,15 @@ getData?.forEach((element) => {
- +
- +
`; -}); \ No newline at end of file + }); + }) + .catch((err) => console.log(err)); + +// fetch(); diff --git a/admin/js/model.js b/admin/js/model.js index 6e7ae34..2156dde 100644 --- a/admin/js/model.js +++ b/admin/js/model.js @@ -39,10 +39,10 @@ const handleCreateArticle = (e) => { e.preventDefault(); const formData = new FormData(articleForm).entries(); - const { title, description } = Object.fromEntries(formData); + const { title, content } = Object.fromEntries(formData); const titleErrorMessage = validateTitle(title); - const descriptionErrorMessage = validateDescription(description); + const descriptionErrorMessage = validateDescription(content); if (titleErrorMessage) { const titleErrorMessageElement = document.querySelector( @@ -70,11 +70,31 @@ const handleCreateArticle = (e) => { descriptionErrorMessageElement.style.display = "none"; const imageUrl = localStorage.getItem("save"); + const loginCredentials = JSON.parse( + localStorage.getItem("loginCredentials") + ); + console.log(loginCredentials); + const files = document.querySelector(".article-picture"); + const dataFormatted = new FormData(); + dataFormatted.append("title", title); + dataFormatted.append("content", content); + dataFormatted.append("imageUrl", files.files[0]); + + fetch("https://my-brand-server.herokuapp.com/api/v1/posts", { + method: "post", + headers: { + authorization: `Bearer ${loginCredentials.token}`, + }, + body: dataFormatted, + }) + .then((res) => res.json()) + .then((data) => console.log(data)) + .catch((err) => console.log(err)); const blog = { id: Date.now(), imageUrl, title, - description, + content, like: 0, comments: [], numberOfComments: 0, @@ -89,7 +109,7 @@ const handleCreateArticle = (e) => { localStorage.removeItem("save"); document.querySelector("form").reset(); model.style.display = "none"; - window.location.reload(); + // window.location.reload(); } else { blogList.push(blog); console.log(blogList); @@ -108,19 +128,17 @@ const handleCreateArticle = (e) => { } }; - - - const validateTitle = (title) => { - if (!title.trim()) return "Title of the article is required"; - if (title.trim().length < 8) return "Title must be atleast 8 character long"; - return " "; - }; - const validateDescription = (description) => { - if (!description.trim()) return "decription of the article is required"; - if (description.trim().length < 20) - return "article description must be atleast 20 character long"; - return " "; - }; +const validateTitle = (title) => { + if (!title.trim()) return "Title of the article is required"; + if (title.trim().length < 8) return "Title must be atleast 8 character long"; + return " "; +}; +const validateDescription = (content) => { + if (!content.trim()) return "decription of the article is required"; + if (content.trim().length < 6) + return "article description must be atleast 20 character long"; + return " "; +}; From 574700bc26e57b597390e33e2b8a9299e61e34e8 Mon Sep 17 00:00:00 2001 From: code-250 Date: Mon, 21 Feb 2022 19:01:23 +0200 Subject: [PATCH 2/4] CRUD operation --- admin/admin.html | 4 +- admin/js/blogs.js | 65 ++++++++++++++++++----- js/blog.js | 129 ++++++++++++++++++++++++++++++++++++++-------- js/likeComment.js | 13 ++++- 4 files changed, 174 insertions(+), 37 deletions(-) diff --git a/admin/admin.html b/admin/admin.html index ff2953c..db57183 100644 --- a/admin/admin.html +++ b/admin/admin.html @@ -95,7 +95,7 @@

Create Article

- +
@@ -133,7 +133,7 @@

Update Article

- +
diff --git a/admin/js/blogs.js b/admin/js/blogs.js index 294eed7..486d337 100644 --- a/admin/js/blogs.js +++ b/admin/js/blogs.js @@ -1,6 +1,8 @@ // populating data in the dashboard const newCredentials = localStorage.getItem("loginCredentials"); +const loginData = JSON.parse(newCredentials); + if (!newCredentials) { window.location.replace("../login.html"); } @@ -33,14 +35,12 @@ function update(id) { const reader = new FileReader(); reader.onload = () => { const imageUrls = reader.result; - console.log(imageUrls); if (imageUrls === null) { return "image is required"; } else { localStorage.setItem("recent-image", imageUrls); localStorage.setItem("save", imageUrls); const imagePreviewUpdate = localStorage.getItem("recent-image"); - console.log(imagePreviewUpdate); document .querySelector("#image-preview-update") @@ -50,26 +50,63 @@ function update(id) { }; reader.readAsDataURL(imageUpdate.files[0]); }); + fetch(`https://my-brand-server.herokuapp.com/api/v1/posts/${id}`, { method: "get", headers: { + "Access-Control-Cross-origin": "*", "content-Type": "application/json", }, }) .then((res) => res.json()) .then((data) => { console.log(data, "======="); - const title = (document.querySelector(".title-update").value = - data.title); - const body = (document.querySelector( - ".detailed-update-description" - ).value = data.content); - const image = document - .querySelector("#image-preview-update") - .setAttribute("src", data.imageUrl); + if (!newCredentials) { + console.log("you are not logged in please loggIn"); + } else { + const title = (document.querySelector(".title-update").value = + data.data[0].title); + const content = (document.querySelector( + ".detailed-update-description" + ).value = data.data[0].content); + const image = document + .querySelector("#image-preview-update") + .setAttribute("src", data.data[0].imageUrl); + const filesUpdate = document.querySelector(".article-picture-update"); + + const updated = document.querySelector(".submit-update-btn"); + updated.addEventListener("click", () => { + const title = document.querySelector(".title-update").value; + const content = document.querySelector( + ".detailed-update-description" + ).value; + const updateData = new FormData(); + updateData.append("title", title); + updateData.append("content", content); + updateData.append("imageUrl", filesUpdate.files[0]); + const idUpdate = data.data[0]._id; + console.log(loginData.token); + console.log(idUpdate); + fetch( + `https://my-brand-server.herokuapp.com/api/v1/posts/${idUpdate}`, + { + method: "put", + headers: { + authorization: `Bearer ${loginData.token}`, + }, + body: updateData, + } + ) + .then((res) => res.json()) + .then((data) => { + console.log("log to the console the updated data", data); + window.location.reload(); + }); + }); + } }) .catch((err) => console.log(err)); - RetrievedObj.forEach((article) => { + RetrievedObj?.forEach((article) => { if (article.id == id) { const title = (document.querySelector(".title-update").value = article.title); @@ -133,6 +170,7 @@ let blogCardElement = document.querySelector(".section-content"); fetch("https://my-brand-server.herokuapp.com/api/v1/posts", { method: "get", headers: { + "Access-Control-Cross-origin": "*", "content-Type": "application/json", }, }) @@ -141,7 +179,8 @@ fetch("https://my-brand-server.herokuapp.com/api/v1/posts", { console.log(data); data?.data?.forEach((element) => { let body = element?.content?.slice(0, 120) + "...."; - const id = element.id + const id = element._id; + console.log(id); blogCardElement.innerHTML += `
@@ -159,7 +198,7 @@ fetch("https://my-brand-server.herokuapp.com/api/v1/posts", {
- +
diff --git a/js/blog.js b/js/blog.js index 0f5332d..61a56ef 100644 --- a/js/blog.js +++ b/js/blog.js @@ -1,27 +1,20 @@ - - const navBar = document.querySelector(".profile-full"); - +const showLikes = document.querySelector(".likes-data"); +const liked = document.querySelector(".fa-thumbs-up"); +const SubmitComments = document.querySelector(".comment-btn"); const urlParams = new URLSearchParams(window.location.search); const id = urlParams.get("id"); let article = document.querySelector(".blog-article-content"); -console.log(id); -const getArticle = JSON.parse(localStorage.getItem("blogList")); -const getUser = JSON.parse(localStorage.getItem("loginCredentials")); -console.log(getUser); -if (getUser) { - navBar.innerHTML = `
- blog owner profile -
-
-
${getUser.user.userName}
-
`; -} -getArticle?.forEach((element) => { - if (id == element.id) { - console.log(id, element.id); +fetch(`https://my-brand-server.herokuapp.com/api/v1/posts/${id}`, { + method: "get", + headers: { + "content-Type": "application/json", + }, +}) + .then((res) => res.json()) + .then((data) => { article.innerHTML = `
- dockeriziation working ahead + dockeriziation working ahead
@@ -34,16 +27,110 @@ getArticle?.forEach((element) => {

- ${element.title} + ${data.data.title}

- ${element.description} + ${data.data.content}

`; + showLikes.innerText = `${data.data.likes} likes`; + }) + .catch((err) => console.log(err)); +liked.addEventListener("click", async () => { + const res = await fetch( + `https://my-brand-server.herokuapp.com/api/v1/post/${id}/likes`, + { + method: "post", + headers: { + "content-Type": "application/json", + }, + } + ); + const likes = await res.json(); + console.log(likes); + showLikes.innerText = `${likes.data.likes} likes`; +}); + +const getAllComments = async () => { + const urlParams = new URLSearchParams(window.location.search); + const assignData = document.querySelector(".comments-container"); + const id = urlParams.get("id"); + const res2 = await fetch( + `https://my-brand-server.herokuapp.com/api/v1/${id}/all-comments`, + { + method: "get", + } + ); + const CommentsRetrieved = await res2.json(); + console.log(CommentsRetrieved); + const commentsList = CommentsRetrieved.data.comments; + commentsList?.map((comment) => { + assignData.innerHTML += ` +
+
+ guest profile picture +
+ +
+
+
${comment.name}
+

.

+

Dec, 2, 2021

+
+
+

+ ${comment.comment} +

+
+
+
`; + }); +}; +getAllComments(); + +const createComment = async () => { + const urlParams = new URLSearchParams(window.location.search); + const id = urlParams.get("id"); + const name = document.querySelector(".names"); + const comment = document.querySelector("#comment"); + const res3 = await fetch( + `https://my-brand-server.herokuapp.com/api/v1/${id}/comment`, + { + method: "post", + headers: { + "content-Type": "application/json", + }, + body: JSON.stringify({ + name: name.value, + comment: comment.value, + }), + } + ); + const data = await res3.json(); + console.log(data); +}; + +SubmitComments.addEventListener("click", createComment); +console.log(id); +const getArticle = JSON.parse(localStorage.getItem("blogList")); +const getUser = JSON.parse(localStorage.getItem("loginCredentials")); +console.log(getUser); +if (getUser) { + navBar.innerHTML = `
+ blog owner profile +
+
+
${getUser.user.userName}
+
`; +} +getArticle?.forEach((element) => { + if (id == element.id) { + console.log(id, element.id); + console.log(element); } else { console.log("this article does not exist"); diff --git a/js/likeComment.js b/js/likeComment.js index 6852a1b..b1e465f 100644 --- a/js/likeComment.js +++ b/js/likeComment.js @@ -1,8 +1,19 @@ const commentData = document.querySelector("form"); const SubmitComment = document.querySelector(".comment-btn"); - +const urlParamss = new URLSearchParams(window.location.search); +const ids = urlParamss.get("id"); const getBlogsData = JSON.parse(localStorage.getItem("blogList")); console.log(getBlogsData); + +fetch(`https://my-brand-server.herokuapp.com/api/v1/posts/${ids}`, { + method: "get", + headers: { + "content-Type": "application/json", + }, +}) + .then((res) => res.json()) + .then((data) => {}) + .catch((err) => console.log(err)); const Params = new URLSearchParams(window.location.search); const articleId = Params.get("id"); getBlogsData?.forEach((element) => { From b85a6f5cc0e7d77691a054d1242e9bb8b1ca7ba7 Mon Sep 17 00:00:00 2001 From: code-250 Date: Tue, 22 Feb 2022 12:17:08 +0200 Subject: [PATCH 3/4] integrated the index.html --- .DS_Store | Bin 0 -> 8196 bytes admin/admin.html | 4 +++ admin/contacts.html | 4 +++ article.html | 4 +++ favicon_io/about.txt | 6 +++++ favicon_io/android-chrome-192x192.png | Bin 0 -> 15156 bytes favicon_io/android-chrome-512x512.png | Bin 0 -> 41452 bytes favicon_io/apple-touch-icon.png | Bin 0 -> 13705 bytes favicon_io/favicon-16x16.png | Bin 0 -> 653 bytes favicon_io/favicon-32x32.png | Bin 0 -> 1631 bytes favicon_io/favicon.ico | Bin 0 -> 15406 bytes favicon_io/manifest.json | 31 +++++++++++++++++++++++ index.html | 4 +++ js/blog.js | 9 ++++--- js/blogs.js | 35 ++++++++++++++++++-------- login.html | 4 +++ 16 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 .DS_Store create mode 100755 favicon_io/about.txt create mode 100755 favicon_io/android-chrome-192x192.png create mode 100755 favicon_io/android-chrome-512x512.png create mode 100755 favicon_io/apple-touch-icon.png create mode 100755 favicon_io/favicon-16x16.png create mode 100755 favicon_io/favicon-32x32.png create mode 100755 favicon_io/favicon.ico create mode 100755 favicon_io/manifest.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..006c77477a771e7987ef151bc1403456dde50e4f GIT binary patch literal 8196 zcmeHMU2IfE6rOKeU~YS%mr|jko87uX36`*>g$7Ys+JZuhRJWxqAno0~7r1(RZ`pfy z3zU*-BGDM4zVT!HNqjN*^P-@S{w4ms*~CEN3!3=zpeFc2VvJ|*+-;yxo{Yh8Cz<(X z=FB;>=k%MIJzK^Y+KWarWA%(NPF0{*P0bC8kc)ajnGh!>23H3)K?*=9Qh=aP zpYnh}CmCWU#7T*PD%q6T1431VDF&oE$&+F^VJ5^$iBg?GsxyQ;Bg{|`>`r>gU^zoZ zV$?CCR*za{+d%CaZc3S4xkXF~>I=*f>W+70v43n1Z>9-ui z9cy=sj^PD%vQogg!j&Pdetf)T?b@bfOG|p9DLLNOmTpS6wyc|&Q23H%%@1xJ9yxqu z{OH87Q_??#cLb}M;qU3$oVC4DhjcbJRd)7b*;%EkTAd%?*44fJQFTbGEs-BPMt#e5 zyq#vjBOKCdJo0^O-gSBkrjYmNUAs8qcthI4yl&@C@K%|pJBT_+mY<+%mFBQQ2#k$t&JD|+VRCK~mEJ@tEV%3_q2Qr(d zYP5y5YMr{czhrq<&NlnTEWIo~bjI|?SXa#~#( zZ&Ea!_j=^6G_hK3Ry0rPeTq0BRa@0{Tr-qDThE!coLaAL;98f`Uy>1*lXdDwt_iP`;q<5{$Q8cpX>@^;Hbq? zq_7Oj(TFsf(SlZN!ZviF8w1dhg8>sy!h??z#&8tR;y9ke^LP;_aSCVf3f{y!co*;C zLwt-+@EJbG6u!q#_!+<8S6s$lu{p7-*dqBcV`bj=$Z@%i)lu(;hn#pH9`e|k8}mM~ z<>5!RZo7qfe_??j`=Yu#7B5LITe-S*{X^~3l$gPStJxS3P%=OXf`)Rqype`6Iwo>>UsFQWD(Da>!QynYn$YGD-=%cz zI#tyw=|D*7{ToO+m#8nL8{;Hpp{%+wq0$BUFVXlb_AR@_ej@^3VSi&Ts!@*yqV6iR zVIvW@6PvLGJMb8?=tUp)VwfnLClZgq#X%H^$VYJulXx1>;02r@8oz{>ahhoSDqh3u zcnfFoHWB(9&J&?OB0_&nbiRN~Gw9o0Cay&MFdKbK*@9!c&VG`Ysei3%G`d*?Dx|Pp z + + + + + + + + + + + + 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 Y-moPYp~YPDRf7e{NGOWeh#H0bANIXMr~m)} literal 0 HcmV?d00001 diff --git a/favicon_io/android-chrome-512x512.png b/favicon_io/android-chrome-512x512.png new file mode 100755 index 0000000000000000000000000000000000000000..16335b3edb844ac2174d26e181add132dade96ba GIT binary patch literal 41452 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 literal 0 HcmV?d00001 diff --git a/favicon_io/favicon.ico b/favicon_io/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..b0a708cc9aa5fbac3efaa1f74b58bb7a3b906af7 GIT binary patch literal 15406 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 Z_5FrFkfv&TXT|q3{uuuM{l7f}{{~;hb(;VH literal 0 HcmV?d00001 diff --git a/favicon_io/manifest.json b/favicon_io/manifest.json new file mode 100755 index 0000000..58340f5 --- /dev/null +++ b/favicon_io/manifest.json @@ -0,0 +1,31 @@ +{ + "name": "Richard Munyemana", + "short_name": "RM", + "start_url": "index.html", + "display": "standalone", + "background_color": "#fdfdfd", + "theme_color": "#db4938", + "orientation": "portrait-primary", + "icons": [ + { + "src": "/favicon_io/android-chrome-192x192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/favicon_io/android-chrome-512x512.png", + "type": "image/png", + "sizes": "512x512" + }, + { + "src": "/favicon_io/favicon-16x16.png", + "type": "image/png", + "sizes": "16x16" + }, + { + "src": "/favicon_io/favicon-32x32.png", + "type": "image/png", + "sizes": "32x32" + } + ] +} diff --git a/index.html b/index.html index f7fbbba..c01592b 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,10 @@ + + + + res.json()) .then((data) => { + if (data.status !== 200) return console.log("no datas here"); article.innerHTML = `
- dockeriziation working ahead + dockeriziation working ahead
@@ -27,12 +28,12 @@ fetch(`https://my-brand-server.herokuapp.com/api/v1/posts/${id}`, {

- ${data.data.title} + ${data?.data?.title}

- ${data.data.content} + ${data?.data?.content}

@@ -67,7 +68,7 @@ const getAllComments = async () => { ); const CommentsRetrieved = await res2.json(); console.log(CommentsRetrieved); - const commentsList = CommentsRetrieved.data.comments; + const commentsList = CommentsRetrieved?.data?.comments; commentsList?.map((comment) => { assignData.innerHTML += `
diff --git a/js/blogs.js b/js/blogs.js index ea0025f..4669bfb 100644 --- a/js/blogs.js +++ b/js/blogs.js @@ -3,18 +3,25 @@ const getData = JSON.parse(localStorage.getItem("blogList")); console.log(getData); let blogCardElement = document.querySelector(".blog-list"); - -getData?.forEach((element) => { - let body = element?.description.slice(0, 120) + "...."; - - blogCardElement.innerHTML += ` - +fetch("https://my-brand-server.herokuapp.com/api/v1/posts", { + method: "get", + headers: { + "content-Type": "application/json", + }, +}) + .then((res) => res.json()) + .then((data) => { + const retrievedData = data.data; + retrievedData?.map((article) => { + let body = article?.content?.slice(0, 120) + "...."; + blogCardElement.innerHTML += ` +
- importance of reading + importance of reading
-

${element.title}

+

${article.title}

march, 12,2021

@@ -24,13 +31,19 @@ getData?.forEach((element) => {
`; -}); + }); + }) + .catch((err) => { + console.log(err, "this is not working here"); + }); + + diff --git a/login.html b/login.html index e3426fc..fac6683 100644 --- a/login.html +++ b/login.html @@ -4,6 +4,10 @@ + + + + login Page From 665cc169040f89e0a6ff6dce591cd098062fdb08 Mon Sep 17 00:00:00 2001 From: code-250 Date: Tue, 22 Feb 2022 19:15:05 +0200 Subject: [PATCH 4/4] notifications added --- admin/admin.html | 4 +- admin/contacts.html | 2 + admin/js/blogs.js | 10 +- admin/js/queryMesssage.js | 46 +++- admin/styles/admin.css | 27 +++ admin/styles/contacts.css | 29 ++- admin/styles/mobileview.css | 25 +++ article.html | 5 +- index.html | 4 +- js/blog.js | 126 ++++++----- js/validations/contactMessage.js | 260 ++++++++++++----------- js/validations/loginformValidation.js | 20 +- js/validations/registerformValidation.js | 113 ++++++++++ login.html | 4 +- register.html | 50 +++++ styles/article.css | 18 +- styles/contact.css | 54 +++++ styles/login.css | 49 +++++ styles/notification.css | 27 +++ styles/register.css | 239 +++++++++++++++++++++ 20 files changed, 915 insertions(+), 197 deletions(-) create mode 100644 js/validations/registerformValidation.js create mode 100644 register.html create mode 100644 styles/notification.css create mode 100644 styles/register.css diff --git a/admin/admin.html b/admin/admin.html index 2a8ab0e..28f2c6f 100644 --- a/admin/admin.html +++ b/admin/admin.html @@ -182,6 +182,8 @@

Update Article

Articles

+ +
@@ -368,7 +370,7 @@

CSS

- + + + \ No newline at end of file diff --git a/styles/article.css b/styles/article.css index ecac94b..fff7f08 100644 --- a/styles/article.css +++ b/styles/article.css @@ -236,9 +236,8 @@ } .comment-btn{ position:absolute; - top:300px; - left:555px; - right:0; + top:320px; + right:110px; padding:10px; text-align:center; width:9vw; @@ -374,6 +373,19 @@ width:95%; padding:0px; } + .comment-btn{ + position:absolute; + top:320px; + right:70px; + padding:10px; + text-align:center; + width:30vw; + font-family: Raleway; + font-weight:600; + border-radius:10px ; + border: 3px solid var(--textColor); + + } .comment-guest{ width:95%; padding:10px; diff --git a/styles/contact.css b/styles/contact.css index bff1e28..100dee1 100644 --- a/styles/contact.css +++ b/styles/contact.css @@ -37,6 +37,31 @@ .contact-content{ width:40%; text-align:center; + position: relative; +} +.popupCreate .success{ + position:absolute; + top:0px; + left:800px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; +} + +.fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; +} +.fadeout{ + display:none; } .contact-title{ position:relative; @@ -319,4 +344,33 @@ margin:10px; font-size: 15px; } + .contact-content{ + width:40%; + text-align:center; + position: relative; + } + .popupCreate .success{ + position:absolute; + top:0px; + left:200px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; + } + + .fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; + } + .fadeout{ + display:none; + } } \ No newline at end of file diff --git a/styles/login.css b/styles/login.css index c913959..8a17801 100644 --- a/styles/login.css +++ b/styles/login.css @@ -25,6 +25,30 @@ background-color: #1B242F; position: relative; } +.popupCreate .success{ + position:absolute; + top:-140px; + left:690px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; +} + +.fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; +} +.fadeout{ + display:none; +} .content{ background: rgba(196, 196, 196, 0.1); display:flex; @@ -70,6 +94,7 @@ margin-top:60px; color:#5A5A5A } + .input.input-error{ border:1px solid red; } @@ -161,4 +186,28 @@ .go-back{ margin-top:40px; } + .popupCreate .success{ + position:absolute; + top:-120px; + left:100px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; + } + + .fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; + } + .fadeout{ + display:none; + } } \ No newline at end of file diff --git a/styles/notification.css b/styles/notification.css new file mode 100644 index 0000000..5bd574f --- /dev/null +++ b/styles/notification.css @@ -0,0 +1,27 @@ +.container{ + position:relative +} +.popupCreate .success{ + position:absolute; + top:70px; + left:1100px; + background-color:green; + padding:20px; + width:300px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; +} + +.fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; +} +.fadeout{ + display:none; +} \ No newline at end of file diff --git a/styles/register.css b/styles/register.css new file mode 100644 index 0000000..87a9ddc --- /dev/null +++ b/styles/register.css @@ -0,0 +1,239 @@ +@import url('https://fonts.googleapis.com/css2?family=Dancing+Script:wght@700&family=Nunito:wght@200;300;400;600;700&family=Raleway:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,700&display=swap'); + +:root{ + --headerback:#252934; + --navback:#1B242F; + --navborder:#04C2C9; + --textColor:#E31B6D; + --textwhite:#ffff; + --textSecondColor:#5A5A5A; + --skillBackground:#E5E2E2; + --skillanim:#04A4AA; + --titleText:#444649; + --projectback:#f5f5f5; +} + +*{ + padding:0; + margin:0; + font-family: "Relaway" sans-serif; +} + +.container{ + width:100%; + min-height:100vh; + background-color: #1B242F; + position: relative; +} +.popupCreate .success{ + position:absolute; + top:-140px; + left:690px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; +} + +.fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; +} +.fadeout{ + display:none; +} +.back-links{ + display:flex; + justify-content: space-between; + width:100%; +} +.back-to-home, .back-to-login{ + color:white; + font-family: Raleway; + font-weight: 400; + font-size:15px; + padding-right:15px; +} +.content{ + background: rgba(196, 196, 196, 0.1); + display:flex; + flex-direction: column; + width:30vw; + min-height:65vh; + border-radius: 10px; + position:absolute; + top:20%; + right:0; + left:0; + /* justify-content: center; */ + margin:auto; + align-items:center; +} +.title{ + margin-top:30px; + color:white; + font-weight:400; +} +.title span{ + color:var(--textColor); + font-weight:700; +} +.login-content{ + background-color: #252934; + min-height:40vh; + width:26vw; + border-radius: 10px; + display:flex; + margin-top:30px; + flex-direction: column; + text-align:center; + align-items: center; + padding: 12px; +} +#email{ + padding:10px; + width:22vw; + background: #1E242C; + border:none; + border-radius:2px; + margin-top:35px; + color:#5A5A5A +} +#userName{ + padding:10px; + width:22vw; + background: #1E242C; + border:none; + border-radius:2px; + margin-top:60px; + color:#5A5A5A +} +.input.input-error{ + border:1px solid red; +} +#password{ + padding:10px; + width:22vw; + background: #1E242C; + margin-top:35px; + border:none; + border-radius:2px; + color:#5A5A5A +} +.login-btn{ + width:8vw; + background-color: var(#E31B6D); + height:40px; + color:white; + text-align:center; + display:flex; + align-items: center; + justify-content: center; + font-family: Raleway; + font-weight: 500; + border:4px solid var(--textColor); + margin:30px; + margin-left:245px; +} +.login-btn:hover{ + background-color: var(--textColor); + transition:0.4s ease-in-out; + cursor:pointer; +} +.go-back{ + color:var(--navborder); + font-family: Raleway; + font-weight:400; + margin-top: -10px; + text-decoration: none; +} +.hidden{ + display:none; +} +.icon { + width: 24px; + height: 24px; + position: absolute; + top: 32px; + right: 5px; + pointer-events: none; + z-index: 2; +} +.icon.icon-success { + fill: green; +} + +.icon.icon-error { + fill: red; +} +.error-message { + font-size: .85rem; + color: red; + font-family:Raleway; + margin-top:.8rem; +} +@media screen and (max-width:768px){ + .content{ + width:80%; + } + .login-content{ + width:85%; + margin-top:10px; + padding:5px; + } + #email{ + width:80%; + margin-top:30px; + border-radius: 5px; + } + #userName{ + width:80%; + margin-top:30px; + border-radius: 5px; + } + #password{ + width:80%; + margin-top:20px; + border-radius:5px; + } + .login-btn{ + width:25vw; + height:30px; + margin: auto; + margin-top:20px; + } + .go-back{ + margin-top:40px; + } + .popupCreate .success{ + position:absolute; + top:-120px; + left:100px; + background-color:green; + padding:20px; + width:200px; + height:40px; + display:flex; + z-index:2; + align-items: center; + justify-content: center; + border-radius: 10px; + } + + .fade-out{ + color:white; + font-family: Raleway; + font-weight: 500; + font-size: 15px; + } + .fadeout{ + display:none; + } +} \ No newline at end of file