From 837f9ef2472ae9539a674de5c1185ae006af8521 Mon Sep 17 00:00:00 2001
From: HuXn
Date: Wed, 21 Jun 2023 13:05:53 -0700
Subject: [PATCH 1/8] BookList Project
---
{084. BookList Project => 84. BookList Project}/app.js | 0
{084. BookList Project => 84. BookList Project}/index.html | 0
{084. BookList Project => 84. BookList Project}/style.css | 0
3 files changed, 0 insertions(+), 0 deletions(-)
rename {084. BookList Project => 84. BookList Project}/app.js (100%)
rename {084. BookList Project => 84. BookList Project}/index.html (100%)
rename {084. BookList Project => 84. BookList Project}/style.css (100%)
diff --git a/084. BookList Project/app.js b/84. BookList Project/app.js
similarity index 100%
rename from 084. BookList Project/app.js
rename to 84. BookList Project/app.js
diff --git a/084. BookList Project/index.html b/84. BookList Project/index.html
similarity index 100%
rename from 084. BookList Project/index.html
rename to 84. BookList Project/index.html
diff --git a/084. BookList Project/style.css b/84. BookList Project/style.css
similarity index 100%
rename from 084. BookList Project/style.css
rename to 84. BookList Project/style.css
From 97be8cd59acbad2e439bc51ff3fd9dcc378af13c Mon Sep 17 00:00:00 2001
From: HuXn
Date: Wed, 21 Jun 2023 13:07:04 -0700
Subject: [PATCH 2/8] The Art Landing Page
---
96. The Art/index.html | 154 ++++++++++++++++++++++++++++++++++
96. The Art/style.css | 186 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 340 insertions(+)
create mode 100644 96. The Art/index.html
create mode 100644 96. The Art/style.css
diff --git a/96. The Art/index.html b/96. The Art/index.html
new file mode 100644
index 0000000..5aa4bcb
--- /dev/null
+++ b/96. The Art/index.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+ theArt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WHAT
+ IS CALLED ART?
+
+
+ Art, also called (to distinguish it from other art forms) visual art, a
+ visual object or experience consciously
+ created through an expression of skill or imagination.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7 TYPES OF ART
+
+ The seven different art forms are
+
+ Painting, Sculpture, Literature, Architecture, Theater, Film, and
+ Music
+
+ . However, back in the day, the seven different art forms were called
+ the Liberal Arts, consisting of Grammar, Logic, Rhetoric, Arithmetic,
+ Geometry, Astronomy, and Music.
+
+
+
+
+
PAINTING
+
+
+
+
SCULPTURE
+
+
+
+
LITERATURE
+
+
+
+
ARCHITECTURE
+
+
+
+
CINEMA
+
+
+
+
MUSIC
+
+
+
+
THEATER
+
+
+
+
+
+
+
+
diff --git a/96. The Art/style.css b/96. The Art/style.css
new file mode 100644
index 0000000..950a5b0
--- /dev/null
+++ b/96. The Art/style.css
@@ -0,0 +1,186 @@
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+/* Fonts */
+@import url("https://fonts.googleapis.com/css?family=Open+Sans:300&display=swap");
+@import url("https://fonts.googleapis.com/css?family=Reenie+Beanie&display=swap");
+
+/* Basic */
+body {
+ background-color: #ebeae9;
+}
+
+html {
+ font-family: "Open Sans", sans-serif;
+}
+
+nav {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: #fff;
+ padding: 20px;
+ margin-bottom: 5rem;
+}
+
+nav ul {
+ margin-left: 5rem;
+ list-style: none;
+}
+
+li a {
+ text-decoration: none;
+ color: #000;
+}
+
+nav .burger {
+ margin-right: 5rem;
+ cursor: pointer;
+}
+
+nav .burger span {
+ height: 4px;
+ border: 2px solid black;
+ margin: 4px;
+ background: #000;
+}
+
+header {
+ margin: 6rem;
+}
+
+.main-headings {
+ width: 50%;
+ font-size: 3rem;
+}
+
+.primary-headings {
+ width: 50%;
+ margin-top: 3rem;
+ font-size: 1.5rem;
+ line-height: 30px;
+}
+
+.bg-gray {
+ background: rgb(53, 53, 53);
+ color: #fff;
+ padding: 2px 10px;
+ font-weight: bold;
+}
+/* Header End */
+
+/* Main Start */
+main {
+ margin: 0 4rem;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 40px;
+}
+
+main .img {
+ width: 50%;
+}
+
+/* SECTION THREE START */
+.section-three {
+ margin-left: 5rem;
+}
+
+.section-three .primary-headings {
+ margin-bottom: 10rem;
+}
+
+.list {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+}
+
+.section-three .item h1 {
+ font-size: 2rem;
+ color: rgb(53, 53, 53);
+ margin-left: 1rem;
+}
+
+.section-three img {
+ width: 400px;
+ height: 500px;
+ margin: 50px;
+}
+/* SECTION THREE END */
+
+/* FOOTER START */
+footer {
+ background: var(--primary-color);
+ margin-top: 10rem;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-around;
+ align-items: center;
+ height: 100vh;
+ color: #fff;
+}
+
+footer .logo-container h1 {
+ font-size: 4rem;
+ font-family: var(--main-font);
+ margin-bottom: 20px;
+}
+
+footer .logo-container p {
+ max-width: 400px;
+ font-family: sans-serif;
+ line-height: 25px;
+}
+
+footer .about-company {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+}
+
+footer .about-company .container {
+ margin-right: 40px;
+ margin-top: 20px;
+}
+
+.about-company .container h1 {
+ margin-bottom: 50px;
+}
+
+.about-company .container p {
+ font-family: sans-serif;
+ margin-bottom: 20px;
+}
+
+footer {
+ height: 100vh;
+ background: rgb(43, 43, 43);
+}
+
+@media screen and (max-width: 740px) {
+ header .main-headings {
+ width: 100%;
+ }
+ header .primary-headings {
+ width: 100%;
+ font-size: 1.5rem;
+ }
+
+ .section-three .main-headings {
+ width: 100%;
+ }
+ .section-three .primary-headings {
+ width: 100%;
+ font-size: 1.5rem;
+ }
+
+ .section-three img {
+ margin: 0;
+ }
+}
From efc36b630675680bea1b7ffe295ec1a8fe503753 Mon Sep 17 00:00:00 2001
From: HuXn
Date: Wed, 21 Jun 2023 13:07:55 -0700
Subject: [PATCH 3/8] Form Validation For Beginners
---
97. Form Validation/index.html | 69 +++++++++++++++++++++++++++
97. Form Validation/script.js | 52 ++++++++++++++++++++
97. Form Validation/style.css | 87 ++++++++++++++++++++++++++++++++++
3 files changed, 208 insertions(+)
create mode 100644 97. Form Validation/index.html
create mode 100644 97. Form Validation/script.js
create mode 100644 97. Form Validation/style.css
diff --git a/97. Form Validation/index.html b/97. Form Validation/index.html
new file mode 100644
index 0000000..8548e81
--- /dev/null
+++ b/97. Form Validation/index.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+ Form Validator
+
+
+
+
+
+
+
+
+
+ Shoe
+ Palace
+
+
+
+
+
+
+
+
diff --git a/97. Form Validation/script.js b/97. Form Validation/script.js
new file mode 100644
index 0000000..6b951d4
--- /dev/null
+++ b/97. Form Validation/script.js
@@ -0,0 +1,52 @@
+const username = document.querySelector(".username");
+const email = document.querySelector(".email");
+const password1 = document.querySelector(".password1");
+const password2 = document.querySelector(".password2");
+const submit = document.querySelector(".submit");
+
+// MESSAGES
+const usernameMessage = document.querySelector(".user-msg");
+const emailMessage = document.querySelector(".email-msg");
+const password1Message = document.querySelector(".password1-msg");
+const password2Message = document.querySelector(".password2-msg");
+
+submit.addEventListener("click", (e) => {
+ e.preventDefault();
+
+ if (username === "" && email === "" && password1 === "" && password2 === "") {
+ alert("Please fill all input fields");
+ }
+
+ if (username.value === "") {
+ showMessage(usernameMessage, "Please Provide Your Name", "#FF0000");
+ } else {
+ showMessage(usernameMessage, "Great Name", "#4BB543");
+ }
+
+ if (email.value === "") {
+ showMessage(emailMessage, "Please Provide Your Email", "#FF0000");
+ } else {
+ showMessage(emailMessage, "Got your email", "#4BB543");
+ }
+
+ if (password1.value === "") {
+ showMessage(password1Message, "Please Provide Your Password", "#FF0000");
+ } else {
+ showMessage(password1Message, "Valid password", "#4BB543");
+ }
+
+ if (password2.value === "") {
+ showMessage(password2Message, "Confirm Your Password", "#FF0000");
+ } else if (password1.value !== password2.value) {
+ showMessage(password2Message, "Passwords do not match", "#FF0000");
+ } else {
+ showMessage(password2Message, "Valid password", "#4BB543");
+ }
+});
+
+function showMessage(element, msg, color) {
+ element.style.visibility = "visible";
+ element.textContent = msg;
+ element.style.color = color;
+ element.previousElementSibling.style.border = `2px solid ${color}`;
+}
diff --git a/97. Form Validation/style.css b/97. Form Validation/style.css
new file mode 100644
index 0000000..ea2a065
--- /dev/null
+++ b/97. Form Validation/style.css
@@ -0,0 +1,87 @@
+* {
+ padding: 0;
+ margin: 0;
+ box-sizing: border-box;
+}
+
+:root {
+ --main-color: #161a1d;
+ --primary-color: #7289da;
+ --gray-color: #4f4f4f;
+}
+
+body {
+ background-color: var(--main-color);
+}
+
+/* Form */
+form {
+ border: 2px solid rgba(255, 255, 255, 0.224);
+ border-radius: 5px;
+ width: 30%;
+ padding: 40px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ opacity: 1.2;
+ margin-left: 60px;
+ margin-top: 50px;
+}
+
+form input {
+ padding: 6px;
+ width: 230px;
+ outline: none;
+}
+
+input[type="submit"] {
+ width: 230px;
+ background: var(--primary-color);
+ border: none;
+ padding: 10px 20px;
+ cursor: pointer;
+}
+
+.already {
+ margin-top: 20px;
+}
+
+form p {
+ font-family: sans-serif;
+ font-size: 14px;
+ color: #fff;
+}
+
+.input-container p.msg {
+ visibility: hidden;
+ margin-bottom: 10px;
+ margin-top: 5px;
+}
+
+.input-container.error p.msg {
+ visibility: visible;
+}
+
+img {
+ width: 51%;
+ position: absolute;
+ top: 60px;
+ right: 10%;
+}
+
+.content h1 {
+ position: absolute;
+ top: 45%;
+ right: 38%;
+ font-size: 5rem;
+ color: #fff;
+}
+
+.input-container.error input {
+ border-color: red;
+}
+
+.input-container.success input {
+ border-color: rgb(97, 249, 97);
+}
From 87aa8c5e47b96f15537ae3a962dd30b917e312b2 Mon Sep 17 00:00:00 2001
From: HuXn
Date: Wed, 21 Jun 2023 13:08:31 -0700
Subject: [PATCH 4/8] Meal Finder Project
---
098. Meal Finder/app.js | 73 ++++++++++++++++++++++
098. Meal Finder/index.html | 49 +++++++++++++++
098. Meal Finder/style.css | 121 ++++++++++++++++++++++++++++++++++++
3 files changed, 243 insertions(+)
create mode 100644 098. Meal Finder/app.js
create mode 100644 098. Meal Finder/index.html
create mode 100644 098. Meal Finder/style.css
diff --git a/098. Meal Finder/app.js b/098. Meal Finder/app.js
new file mode 100644
index 0000000..75e04f2
--- /dev/null
+++ b/098. Meal Finder/app.js
@@ -0,0 +1,73 @@
+const searchMeal = async (e) => {
+ e.preventDefault();
+
+ // Select Elements
+ const input = document.querySelector(".input");
+ const title = document.querySelector(".title");
+ const info = document.querySelector(".info");
+ const img = document.querySelector(".img");
+ const ingredientsOutput = document.querySelector(".ingredients");
+
+ const showMealInfo = (meal) => {
+ const { strMeal, strMealThumb, strInstructions } = meal;
+ title.textContent = strMeal;
+ img.style.backgroundImage = `url(${strMealThumb})`;
+ info.textContent = strInstructions;
+
+ const ingredients = [];
+
+ for (let i = 1; i <= 20; i++) {
+ if (meal[`strIngredient${i}`]) {
+ ingredients.push(
+ `${meal[`strIngredient${i}`]} - ${meal[`strMeasure${i}`]}`
+ );
+ } else {
+ break;
+ }
+ }
+
+ const html = `
+ ${ingredients
+ .map((ing) => `${ing} `)
+ .join("")}
+ `;
+
+ ingredientsOutput.innerHTML = html;
+ };
+
+ const showAlert = () => {
+ alert("Meal not found :(");
+ };
+
+ // Fetch Data
+ const fetchMealData = async (val) => {
+ const res = await fetch(
+ `https://www.themealdb.com/api/json/v1/1/search.php?s=${val}`
+ );
+
+ const { meals } = await res.json();
+ return meals;
+ };
+
+ // Get the user value
+ const val = input.value.trim();
+
+ if (val) {
+ const meals = await fetchMealData(val);
+
+ if (!meals) {
+ showAlert();
+ return;
+ }
+
+ meals.forEach(showMealInfo);
+ } else {
+ alert("Please try searching for meal :)");
+ }
+};
+
+const form = document.querySelector("form");
+form.addEventListener("submit", searchMeal);
+
+const magnifier = document.querySelector(".magnifier");
+magnifier.addEventListener("click", searchMeal);
diff --git a/098. Meal Finder/index.html b/098. Meal Finder/index.html
new file mode 100644
index 0000000..2511c6c
--- /dev/null
+++ b/098. Meal Finder/index.html
@@ -0,0 +1,49 @@
+
+
+
+
+ Meal Finder
+
+
+
+
+
+
+
+
+ Breakfast
+ Launch
+ Dinner
+
+
+
+
+
+
+
+
+
Food Name
+
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Unde
+ nostrum consequatur, nulla explicabo vero nesciunt architecto
+ officiis eius ullam alias.
+
+
$20 - Order Now
+
+
+
+
+
+
+
+
+
diff --git a/098. Meal Finder/style.css b/098. Meal Finder/style.css
new file mode 100644
index 0000000..1b6f210
--- /dev/null
+++ b/098. Meal Finder/style.css
@@ -0,0 +1,121 @@
+* {
+ box-sizing: border-box;
+}
+
+nav {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ margin: 20px;
+}
+
+.input-container {
+ display: flex;
+ align-items: center;
+ border: 1px solid #ff6e00;
+ padding: 5px;
+ width: 300px;
+ height: 50px;
+ border-radius: 50px;
+ margin: 10px;
+ position: relative;
+ transition: width 1.5s;
+}
+
+.input {
+ margin: 10px 50px;
+ margin-left: 20px;
+ width: 100%;
+ color: #ff6e00;
+ border: none;
+ background: transparent;
+ outline: none;
+ transition-delay: 0.5s;
+}
+
+.magnifier {
+ position: absolute;
+ right: 15px;
+ width: 25px;
+ text-align: center;
+ margin: 0 auto;
+ cursor: pointer;
+ color: #ffa31a;
+}
+
+ul li {
+ display: inline;
+ margin-left: 40px;
+ font-family: sans-serif;
+}
+
+main {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.container {
+ width: 60%;
+ padding: 3rem;
+ box-shadow: 10px 10px 40px 5px #e0e0e0;
+ margin-top: 5rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.content-container h1 {
+ font-family: sans-serif;
+ font-size: 2rem;
+ color: #2c2c2c;
+}
+
+.content-container p {
+ font-family: sans-serif;
+ line-height: 1.4;
+ margin-bottom: 2rem;
+ color: #444444;
+ width: 26rem;
+}
+
+.img {
+ transform: translateX(-120px);
+ margin-top: 1rem;
+ width: 350px;
+ height: 350px;
+ border-radius: 300px;
+ background: url("https://images.unsplash.com/photo-1600289031464-74d374b64991?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1075&q=80");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: conver;
+}
+
+.ingredients {
+ width: 80%;
+ margin: 0 auto;
+ margin-top: 5rem;
+ padding: 50px;
+}
+
+.ingredients span {
+ display: flex;
+ flex-wrap: wrap;
+ list-style: none;
+}
+
+.ing {
+ padding: 10px 20px;
+ border: 2px solid #ff6e00;
+ color: #ff6e00;
+ font-family: sans-serif;
+ border-radius: 100px;
+}
+
+.main-btn {
+ background: transparent;
+ border: none;
+ border: 2px solid #ffa31a;
+ padding: 10px;
+ color: #ffa31a;
+}
From 09089604546c8809dbb2107ea29ae51b2d5ae820 Mon Sep 17 00:00:00 2001
From: HuXn
Date: Wed, 21 Jun 2023 13:10:07 -0700
Subject: [PATCH 5/8] Meal Finder rename
---
{098. Meal Finder => 98. Meal Finder}/app.js | 0
{098. Meal Finder => 98. Meal Finder}/index.html | 0
{098. Meal Finder => 98. Meal Finder}/style.css | 0
3 files changed, 0 insertions(+), 0 deletions(-)
rename {098. Meal Finder => 98. Meal Finder}/app.js (100%)
rename {098. Meal Finder => 98. Meal Finder}/index.html (100%)
rename {098. Meal Finder => 98. Meal Finder}/style.css (100%)
diff --git a/098. Meal Finder/app.js b/98. Meal Finder/app.js
similarity index 100%
rename from 098. Meal Finder/app.js
rename to 98. Meal Finder/app.js
diff --git a/098. Meal Finder/index.html b/98. Meal Finder/index.html
similarity index 100%
rename from 098. Meal Finder/index.html
rename to 98. Meal Finder/index.html
diff --git a/098. Meal Finder/style.css b/98. Meal Finder/style.css
similarity index 100%
rename from 098. Meal Finder/style.css
rename to 98. Meal Finder/style.css
From b3f3c76e5afbbc3fe10eb5982dbd5471d94b899d Mon Sep 17 00:00:00 2001
From: HuXn
Date: Thu, 22 Jun 2023 09:21:15 -0700
Subject: [PATCH 6/8] Github Profile Clone
---
99. Github Profile Clone/app.js | 131 +++++++++++
99. Github Profile Clone/git-fork_1.svg | 39 ++++
99. Github Profile Clone/index.html | 289 ++++++++++++++++++++++++
99. Github Profile Clone/style.css | 260 +++++++++++++++++++++
4 files changed, 719 insertions(+)
create mode 100644 99. Github Profile Clone/app.js
create mode 100644 99. Github Profile Clone/git-fork_1.svg
create mode 100644 99. Github Profile Clone/index.html
create mode 100644 99. Github Profile Clone/style.css
diff --git a/99. Github Profile Clone/app.js b/99. Github Profile Clone/app.js
new file mode 100644
index 0000000..1ff7976
--- /dev/null
+++ b/99. Github Profile Clone/app.js
@@ -0,0 +1,131 @@
+const form = document.querySelector("form");
+const input = document.querySelector("input");
+const reposContainer = document.querySelector(".repos");
+const mainContainer = document.querySelector(".main-container");
+
+const API = "https://api.github.com/users/";
+
+async function fetchData(username) {
+ try {
+ const response = await fetch(`${API}${username}`);
+ if (!response.ok) throw new Error(response.statusText);
+
+ const {
+ avatar_url,
+ bio,
+ blog,
+ company,
+ followers,
+ following,
+ location,
+ login,
+ twitter_username,
+ } = await response.json();
+
+ const html = `
+
+ ${login}
+ Follow
+ ${bio}
+
+ `;
+
+ const section = document.createElement("section");
+ section.classList.add("about-user");
+ section.innerHTML = html;
+ mainContainer.insertAdjacentElement("afterbegin", section);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+async function fetchRepos(username) {
+ try {
+ const response = await fetch(`${API}${username}/subscriptions`);
+ if (!response.ok) throw new Error(response.statusText);
+ const data = await response.json();
+
+ data.forEach(
+ ({
+ name,
+ description,
+ forks_count,
+ language,
+ watchers_count,
+ git_url,
+ }) => {
+ const modifiedUrl = git_url
+ .replace(/^git:/, "http:")
+ .replace(/\.git$/, "");
+
+ const singleElement = document.createElement("div");
+ singleElement.classList.add("repo-card");
+ const html = `
+ ${name}
+ ${description}
+
+
${language}
+
${watchers_count}
+
+
${forks_count}
+
+
+ Public
+ `;
+ singleElement.innerHTML = html;
+ reposContainer.append(singleElement);
+ }
+ );
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+form.addEventListener("submit", async (e) => {
+ e.preventDefault();
+ const val = input.value;
+
+ if (val) {
+ try {
+ await fetchData(val);
+ await fetchRepos(val);
+ } catch (error) {
+ console.log(error);
+ } finally {
+ input.value = "";
+ }
+ }
+
+ document
+ .querySelector("input")
+ .addEventListener("click", () => location.reload());
+});
diff --git a/99. Github Profile Clone/git-fork_1.svg b/99. Github Profile Clone/git-fork_1.svg
new file mode 100644
index 0000000..5caf333
--- /dev/null
+++ b/99. Github Profile Clone/git-fork_1.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/99. Github Profile Clone/index.html b/99. Github Profile Clone/index.html
new file mode 100644
index 0000000..d313fbd
--- /dev/null
+++ b/99. Github Profile Clone/index.html
@@ -0,0 +1,289 @@
+
+
+
+
+ Github Profile Clone
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Popular Repositories
+
+
+
+
+
+
+
+
+
diff --git a/99. Github Profile Clone/style.css b/99. Github Profile Clone/style.css
new file mode 100644
index 0000000..2c628ed
--- /dev/null
+++ b/99. Github Profile Clone/style.css
@@ -0,0 +1,260 @@
+* {
+ padding: 0;
+ margin: 0;
+ box-sizing: border-box;
+}
+
+a {
+ text-decoration: none;
+}
+
+:root {
+ --primary-color: #161b22;
+ --secondary-color: #0d1117;
+}
+
+body {
+ background: var(--secondary-color);
+ font-family: Hubot-Sans, sans-serif;
+ font-weight: normal;
+}
+
+/* ************************** Navigation ************************** */
+nav {
+ background: var(--primary-color);
+ padding: 15px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.nav-container {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+}
+
+nav ul li {
+ display: inline;
+ margin: 10px;
+}
+
+ul li a {
+ text-decoration: none;
+ color: #fff;
+ font-size: 14px;
+}
+
+nav form {
+ width: 20%;
+}
+
+nav form input {
+ background: var(--secondary-color);
+ padding: 7px;
+ border: none;
+ border-radius: 5px;
+ width: 100%;
+ border: 1px solid #4a515d;
+ color: #fff;
+}
+
+nav form input::placeholder {
+ color: #fff;
+}
+
+/* ************************** Header ************************** */
+header {
+ border-bottom: 0.6px solid #242424;
+}
+
+.active {
+ border-bottom: 2px solid rgb(255, 102, 0);
+ padding-bottom: 20px;
+}
+
+header ul {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+header ul li {
+ list-style: none;
+ margin: 20px;
+}
+
+.btns-container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 210px;
+ margin-left: 20px;
+}
+
+.btns-container a {
+ color: #fff;
+}
+
+.btns-container button {
+ background: transparent;
+ border: none;
+ margin-left: 20px;
+ border: 1px solid #585d63;
+ padding: 6px 20px;
+ color: #fff;
+ border-radius: 5px;
+ cursor: pointer;
+}
+
+.main-container {
+ display: flex;
+}
+
+/* ************************** Header ************************** */
+.about-user {
+ width: 30%;
+ margin-left: 30px;
+ color: #fff;
+}
+
+.about-user .user-avatar {
+ background-image: url("https://avatars.githubusercontent.com/u/85052811?v=4");
+ background-repeat: no-repeat;
+ background-size: cover;
+ width: 300px;
+ height: 300px;
+ transform: translateY(-20px);
+ border-radius: 100%;
+}
+
+.user-name {
+ color: #585d63;
+ font-size: 20px;
+ margin: 10px 0;
+ font-weight: normal;
+}
+
+button.follow {
+ width: 70%;
+ background: #21262d;
+ color: #fff;
+ cursor: pointer;
+ border: none;
+ border-radius: 4px;
+ padding: 6px 5px;
+ margin-bottom: 20px;
+}
+
+.followers-info {
+ margin: 15px 0;
+}
+
+.followers-info a {
+ text-decoration: none;
+ color: #fff;
+}
+
+.followers-info span {
+ color: #545c66;
+}
+
+.company,
+.location,
+.blog,
+.twitter_username {
+ margin: 10px 0;
+ color: #dce9f7;
+ font-size: 13px;
+}
+
+/* ************************** REPOSITORIES ************************** */
+main {
+ color: #fff;
+ margin-top: 20px;
+ margin-left: 1rem;
+}
+
+main p {
+ margin-bottom: 20px;
+}
+
+.repo-card {
+ border: 1px solid #4a515d;
+ border-radius: 5px;
+ width: 43%;
+ padding: 10px;
+ margin: 10px;
+ position: relative;
+ padding-top: 1.3rem;
+}
+
+.repo-title {
+ text-decoration: non;
+ color: #549ef3;
+ font-weight: 500;
+ margin-top: 3rem;
+ font-size: 13px;
+}
+
+.repo-subtitle {
+ font-size: 11px;
+ margin-top: 15px;
+ color: #868686;
+}
+
+.popularity {
+ display: flex;
+ color: #585c5e;
+}
+
+.stars {
+ margin-right: 20px;
+ color: #585c5e;
+}
+
+.repos {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.pill {
+ border: 1px solid #4a515d;
+ color: #a3acbc;
+ width: 50px;
+ padding: 3px 10px;
+ border-radius: 100px;
+ font-size: 10px;
+ text-align: center;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+}
+
+/* ************************** STYLING ICONS ************************** */
+.icon-container {
+ margin: 5px 0;
+}
+
+i {
+ color: #4a515d;
+ margin-right: 5px;
+}
+
+.fa-github {
+ font-size: 2rem;
+ color: #fff;
+ margin-right: 1rem;
+}
+
+section.fork {
+ display: flex;
+ align-items: center;
+}
+
+.fork-svg {
+ width: 14px;
+ margin-bottom: 20px;
+ margin-right: 6px;
+}
From 4c167efd591b4fcee56000791824fd7b99604b91 Mon Sep 17 00:00:00 2001
From: HuXn
Date: Fri, 23 Jun 2023 06:54:28 -0700
Subject: [PATCH 7/8] 100 Projects Done
---
100. Wikipedia Clone/app.js | 82 ++++++++++++++++++++
100. Wikipedia Clone/index.html | 25 ++++++
100. Wikipedia Clone/style.css | 131 ++++++++++++++++++++++++++++++++
README.md | 6 +-
thumb.png | Bin 0 -> 209508 bytes
5 files changed, 243 insertions(+), 1 deletion(-)
create mode 100644 100. Wikipedia Clone/app.js
create mode 100644 100. Wikipedia Clone/index.html
create mode 100644 100. Wikipedia Clone/style.css
create mode 100644 thumb.png
diff --git a/100. Wikipedia Clone/app.js b/100. Wikipedia Clone/app.js
new file mode 100644
index 0000000..73b6662
--- /dev/null
+++ b/100. Wikipedia Clone/app.js
@@ -0,0 +1,82 @@
+const searchForm = document.getElementById("search-form");
+const searchInput = document.getElementById("search-input");
+const searchResults = document.getElementById("search-results");
+
+// Theme toggler elements
+const themeToggler = document.getElementById("theme-toggler");
+const body = document.body;
+
+async function searchWikipeida(query) {
+ const encodedQuery = encodeURIComponent(query);
+ const endpoint = `https://en.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=&format=json&origin=*&srlimit=10&srsearch=${encodedQuery}`;
+
+ const reponse = await fetch(endpoint);
+
+ if (!reponse.ok) {
+ throw new Error("Faild to fetch search results form wikipedia API.");
+ }
+
+ const json = await reponse.json();
+ return json;
+}
+
+function displayResults(results) {
+ // Remove the loading spinner
+ searchResults.innerHTML = "";
+
+ results.forEach((result) => {
+ const url = `https://en.wikipedia.org/?curid=${results.pageid}`;
+ const titleLink = `${result.title} `;
+ const urlLink = `${url} `;
+
+ const resultItme = document.createElement("div");
+ resultItme.className = "result-item";
+ resultItme.innerHTML = `
+ ${titleLink}
+ ${urlLink}
+ ${result.snippet}
+ `;
+
+ searchResults.appendChild(resultItme);
+ });
+}
+
+searchForm.addEventListener("submit", async (e) => {
+ e.preventDefault();
+
+ const query = searchInput.value.trim();
+
+ if (!query) {
+ searchResults.innerHTML = "Please enter a valid search term.
";
+ return;
+ }
+
+ searchResults.innerHTML = "Loading ...
";
+
+ try {
+ const results = await searchWikipeida(query);
+
+ if (results.query.searchinfo.totalhits === 0) {
+ searchResults.innerHTML = "No results found.
";
+ } else {
+ displayResults(results.query.search);
+ }
+ } catch (error) {
+ console.error(error);
+ searchResults.innerHTML = `An error occured while searching. Please try again later.
`;
+ }
+});
+
+// Event listener for the theme toggler
+themeToggler.addEventListener("click", () => {
+ body.classList.toggle("dark-theme");
+ if (body.classList.contains("dark-theme")) {
+ themeToggler.textContent = "Dark";
+ themeToggler.style.background = "#fff";
+ themeToggler.style.color = "#333";
+ } else {
+ themeToggler.textContent = "Light";
+ themeToggler.style.border = "2px solid #ccc";
+ themeToggler.style.color = "#333";
+ }
+});
diff --git a/100. Wikipedia Clone/index.html b/100. Wikipedia Clone/index.html
new file mode 100644
index 0000000..c65e204
--- /dev/null
+++ b/100. Wikipedia Clone/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+ Wiki Clone
+
+
+
+
+
+
+
+
diff --git a/100. Wikipedia Clone/style.css b/100. Wikipedia Clone/style.css
new file mode 100644
index 0000000..4b378d1
--- /dev/null
+++ b/100. Wikipedia Clone/style.css
@@ -0,0 +1,131 @@
+* {
+ box-sizing: border-box;
+}
+
+body {
+ font-family: Arial, sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+.container {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 2rem;
+}
+
+h1 {
+ font-size: 3rem;
+ margin-bottom: 2rem;
+}
+
+#search-form {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-bottom: 2rem;
+}
+
+#search-input {
+ font-size: 1.2rem;
+ padding: 0.5rem 1rem;
+ margin-right: 1rem;
+ border: 2px solid #ccc;
+ border-radius: 0.25rem;
+ flex-grow: 1;
+}
+
+#search-input:focus {
+ outline: none;
+ border-color: #0074d9;
+}
+
+button[type="submit"] {
+ font-size: 1.2rem;
+ padding: 0.5rem 1rem;
+ background-color: #0074d9;
+ color: #fff;
+ border: none;
+ border-radius: 0.25rem;
+ cursor: pointer;
+}
+
+button[type="submit"]:hover {
+ background-color: #0063ad;
+}
+
+#search-results {
+ margin-bottom: 2rem;
+}
+
+.result-item {
+ margin-bottom: 1rem;
+}
+
+.result-title {
+ font-size: 1.5rem;
+ margin-top: 0;
+}
+
+.result-link {
+ display: block;
+ font-size: 1.2rem;
+ margin-bottom: 0.5rem;
+ color: #0074d9;
+}
+
+.result-link:hover {
+ text-decoration: underline;
+}
+
+.result-snippet {
+ margin-top: 0;
+}
+
+.spinner {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 2rem;
+ height: 10rem;
+}
+
+/* Dark theme */
+.header-container {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+#theme-toggler {
+ border: none;
+ background: transparent;
+ cursor: pointer;
+ background: #e2e2e2;
+ padding: 10px 20px;
+ border-radius: 100px;
+}
+
+.dark-theme {
+ background-color: #282c34;
+ color: #fff;
+}
+
+.dark-theme #search-input {
+ background-color: #454545;
+ color: #fff;
+ border-color: #fff;
+}
+
+.dark-theme #search-input:focus {
+ border-color: #0074d9;
+}
+
+.dark-theme button[type="submit"] {
+ background-color: #0074d9;
+}
+
+.dark-theme .result-link,
+.dark-theme .result-link:hover {
+ color: #90caf9;
+}
diff --git a/README.md b/README.md
index 55922fc..ca86e21 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,5 @@
-# HTML-CSS-JavaScript-100-Projects
+# HTML, CSS & JAVASCRIPT 100+ PROJECTS 👇
+
+# [Watch me build 100 Projects](https://www.youtube.com/watch?v=XrwsMN2IWnE) 🤘🥂.
+
+
diff --git a/thumb.png b/thumb.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9d79d9c6f5638ce316602372fe9ddc14e97da0e
GIT binary patch
literal 209508
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