-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
72 lines (61 loc) · 2.31 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
document.addEventListener("DOMContentLoaded", () => {
const repos = document.querySelectorAll(".repo");
repos.forEach((repo, index) => {
const name = repo.dataset.name;
const description = repo.dataset.description;
const repoLink = `https://github.com/orn8/${name}`;
const nameContainer = document.createElement("a");
nameContainer.href = repoLink;
nameContainer.classList.add("repo-name");
nameContainer.textContent = "_".repeat(name.length);
nameContainer.target = "_blank";
nameContainer.rel = "noopener noreferrer";
const repoIcon = document.createElement("img");
repoIcon.src = "/assets/repo-icon.png";
repoIcon.alt = "GitHub Repo Icon";
repoIcon.classList.add("repo-icon");
repo.prepend(repoIcon);
repo.appendChild(nameContainer);
const descElement = document.createElement("p");
descElement.classList.add("repo-desc");
descElement.textContent = description;
repo.appendChild(descElement);
repo.style.transition = `opacity 1s ease-in-out, transform 1s ease-in-out`;
setTimeout(() => {
repo.style.opacity = 1;
repo.style.transform = "translateY(0)";
}, 500 + index * 200);
repo.addEventListener("transitionend", (event) => {
if (event.propertyName === "opacity") {
let delay = 0;
const typeEffect = setInterval(() => {
if (delay < name.length) {
const currentText = name.slice(0, delay + 1);
const remainingUnderscores = "_".repeat(name.length - delay - 1);
nameContainer.textContent = currentText + remainingUnderscores;
delay++;
} else {
clearInterval(typeEffect);
}
}, 100);
}
});
});
});
// App Menu
document.addEventListener("DOMContentLoaded", () => {
const menuButton = document.getElementById("app-menu-button");
const menuGrid = document.getElementById("app-menu-grid");
menuButton.addEventListener("click", () => {
menuGrid.classList.toggle("show");
});
const appItems = document.querySelectorAll(".app-menu-item");
appItems.forEach((item) => {
item.addEventListener("click", () => {
const link = item.dataset.link;
if (link) {
window.open(link, "_blank");
}
});
});
});