Skip to content

Commit 9f068bb

Browse files
committed
Release: v1.2.1
1 parent b206e87 commit 9f068bb

File tree

11 files changed

+1357
-6
lines changed

11 files changed

+1357
-6
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ zemerik.github.io - [Website](https://zemerik.is-a.dev)
1212

1313
<div align = "center">
1414

15-
![Tools](https://skillicons.dev/icons?i=html,css,javascript,scss,vscode,github&perline=25)
15+
![Tools](https://skillicons.dev/icons?i=html,css,javascript,typescript,scss,vscode,github&perline=25)
1616

1717
</div>
1818

assets/projects/netflix.png

197 KB
Loading

assets/projects/spotify.png

5.87 KB
Loading

assets/projects/youtube.png

16.1 KB
Loading

index.html

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
<a href="#home" class="active">Home</a>
3838
<a href="#about">About</a>
3939
<a href="#services">Skills</a>
40-
<a href="#projects">Projects</a>
40+
<a href="#projects">Exciting Projects</a>
41+
<a href="#newprojects">Upcoming Projects</a>
4142
</nav>
4243

4344
<div class="bx bx-moon" id="darkMode-icon"></div>
@@ -194,6 +195,35 @@ <h4>ZemDocs</h4>
194195
</div>
195196
</section>
196197

198+
<section class="portfolio" id="newprojects">
199+
<h2 class="heading">Upcoming <span>Projects</span></h2>
200+
201+
<div class="portfolio-container">
202+
<div class="portfolio-box">
203+
<img src="assets/projects/netflix.png" alt="">
204+
205+
<div class="portfolio-layer">
206+
<h4>Netflix Clone</h4>
207+
<p>A Neat Netflix Clone</p>
208+
</div>
209+
</div>
210+
<div class="portfolio-box">
211+
<img src="assets/projects/spotify.png" alt="">
212+
<div class="portfolio-layer">
213+
<h4>Spotify Clone</h4>
214+
<p>A Sleek Spotify Clone</p>
215+
</div>
216+
</div>
217+
<div class="portfolio-box">
218+
<img src="assets/projects/youtube.png" alt="">
219+
<div class="portfolio-layer">
220+
<h4>Youtube Clone</h4>
221+
<p>A Yielding Youtube Clone</p>
222+
</div>
223+
</div>
224+
</div>
225+
</section>
226+
197227
<!-- footer design -->
198228
<footer class="footer">
199229
<div class="footer-text">
@@ -215,6 +245,8 @@ <h4>ZemDocs</h4>
215245

216246
<!-- custom js -->
217247
<script src="scripts/script.js"></script>
248+
<script src = "scripts/data.ts"></script>
249+
<script src = "scripts/script.ts"></script>
218250
</body>
219251

220252
</html>

scripts/data.ts

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
type User = {
2+
name: string;
3+
age: number;
4+
skills: string[];
5+
};
6+
7+
class UserProfile {
8+
private user: User;
9+
10+
constructor(user: User) {
11+
this.user = user;
12+
}
13+
14+
getUserInfo(): string {
15+
return `${this.user.name}, Age: ${this.user.age}`;
16+
}
17+
18+
addSkill(skill: string): void {
19+
this.user.skills.push(skill);
20+
}
21+
22+
displaySkills(): void {
23+
this.user.skills.forEach((skill) => {
24+
console.log(`Skill: ${skill}`);
25+
});
26+
}
27+
}
28+
29+
class Theme {
30+
backgroundColor: string;
31+
textColor: string;
32+
33+
constructor(bg: string, text: string) {
34+
this.backgroundColor = bg;
35+
this.textColor = text;
36+
}
37+
38+
applyTheme(): void {
39+
console.log(`Theme applied: Background - ${this.backgroundColor}, Text - ${this.textColor}`);
40+
}
41+
}
42+
43+
class Project {
44+
title: string;
45+
description: string;
46+
47+
constructor(title: string, description: string) {
48+
this.title = title;
49+
this.description = description;
50+
}
51+
52+
displayProject(): void {
53+
console.log(`Project: ${this.title} - ${this.description}`);
54+
}
55+
}
56+
57+
class WebPage {
58+
private profile: UserProfile;
59+
private theme: Theme;
60+
private projects: Project[] = [];
61+
62+
constructor(profile: UserProfile, theme: Theme) {
63+
this.profile = profile;
64+
this.theme = theme;
65+
}
66+
67+
renderProfile(): void {
68+
console.log(this.profile.getUserInfo());
69+
this.profile.displaySkills();
70+
}
71+
72+
addProject(project: Project): void {
73+
this.projects.push(project);
74+
}
75+
76+
loadProjects(): void {
77+
this.projects.forEach((project) => {
78+
project.displayProject();
79+
});
80+
}
81+
82+
applyTheme(): void {
83+
this.theme.applyTheme();
84+
}
85+
}
86+
87+
const user: User = {
88+
name: "Hemang Yadav",
89+
age: 15,
90+
skills: ["HTML", "JavaScript", "Python"],
91+
};
92+
93+
const userProfile = new UserProfile(user);
94+
const darkTheme = new Theme("#121212", "#FFFFFF");
95+
96+
const project1 = new Project("ZemPosts", "Post & Connect with Developers");
97+
const project2 = new Project("ZemShowcase", "Showcase & Connect with Developers");
98+
99+
const myWebPage = new WebPage(userProfile, darkTheme);
100+
101+
myWebPage.renderProfile();
102+
myWebPage.addProject(project1);
103+
myWebPage.addProject(project2);
104+
myWebPage.loadProjects();
105+
myWebPage.applyTheme();
106+
107+
userProfile.addSkill("Vue.js");
108+
userProfile.displaySkills();
109+

scripts/main.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*=============== SHOW MENU ===============*/
2+
const navMenu = document.getElementById('nav-menu'),
3+
navToggle = document.getElementById('nav-toggle'),
4+
navClose = document.getElementById('nav-close')
5+
6+
/*===== MENU SHOW =====*/
7+
/* Validate if constant exists */
8+
if(navToggle){
9+
navToggle.addEventListener('click', () =>{
10+
navMenu.classList.add('show-menu')
11+
})
12+
}
13+
14+
/*===== MENU HIDDEN =====*/
15+
/* Validate if constant exists */
16+
if(navClose){
17+
navClose.addEventListener('click', () =>{
18+
navMenu.classList.remove('show-menu')
19+
})
20+
}
21+
22+
/*=============== REMOVE MENU MOBILE ===============*/
23+
const navLink = document.querySelectorAll('.nav__link')
24+
25+
function linkAction(){
26+
const navMenu = document.getElementById('nav-menu')
27+
// When we click on each nav__link, we remove the show-menu class
28+
navMenu.classList.remove('show-menu')
29+
}
30+
navLink.forEach(n => n.addEventListener('click', linkAction))
31+
32+
/*=============== SCROLL REVEAL ANIMATION ===============*/
33+
const sr = ScrollReveal({
34+
distance: '90px',
35+
duration: 3000,
36+
})
37+
38+
sr.reveal(`.home__data`, {origin: 'top', delay: 400})
39+
sr.reveal(`.home__img`, {origin: 'bottom', delay: 600})
40+
sr.reveal(`.home__footer`, {origin: 'bottom', delay: 800})

0 commit comments

Comments
 (0)