-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
116 lines (98 loc) · 3.64 KB
/
index.html
File metadata and controls
116 lines (98 loc) · 3.64 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Arrow</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="./home/book.css">
<link rel="icon" type="image/png" href="bg.png">
</head>
<body>
<canvas id="bg"></canvas>
<main class="hero">
<div class="hero-inner">
<h1 class="hero-title" style="font-style:italic;" >Welcome to Arrow</h1>
<form class="hero-search" id="uv-form">
<input id="uv-address" type="text" style="font-style:italic;" placeholder="Search DuckDuckGo or type a URL" aria-label="search" />
</form>
<p class="hero-sub" id="hero-quote" style="margin-top:0.1in; font-style:italic;"></p>
</div>
</main>
<aside class="sidebar" aria-label="sidebar">
<div class="group">
<div class="icon active" title="Home"><i data-lucide="home"></i><span class="label">Home</span></div>
<div class="icon" title="AI"><i data-lucide="bot"></i><span class="label">ArrowAI</span></div>
<div class="icon" title="Games"><i data-lucide="gamepad"></i><span class="label">Games</span></div>
<div class="icon" title="Reading"><i data-lucide="book-open"></i><span class="label">Reading</span></div>
<div class="icon" title="Chat"><i data-lucide="message-circle"></i><span class="label">Chat</span></div>
<div class="icon" title="Browser"><i data-lucide="monitor"></i><span class="label">Browser</span></div>
</div>
<div class="bottom">
<div class="icon" title="Home">
<img src="/arrow.png" alt="logo" style="width:28px;height:28px;border-radius:6px;" />
</div>
</div>
</aside>
<script src="stars.js"></script>
<script src="https://unpkg.com/lucide@latest"></script>
<script>window.lucide && lucide.createIcons();</script>
<script>
(function(){
const quotes = [
"As Seen On PC!",
"this message is sponsored by nordvpn",
"(not sponsored gng)",
"decayed > unblora",
"67 💀😭",
"join our discord.gg/WV8cWxYTtQ",
"Thanks tech and petezah for proxy help",
"six sev- fuh no",
"...",
"no chatgpt usage here...",
"do NOT look at my gpt history",
"scramjet sucks",
"new number gng (seven six)",
"This quote was Vibe Coded",
"I NEED HELP WITH SCRAMJET GNG"
];
const key = 'heroQuoteIndex';
let startIdx = parseInt(localStorage.getItem(key) || '0', 10);
if (isNaN(startIdx) || startIdx < 0) startIdx = 0;
localStorage.setItem(key, String((startIdx + 1) % quotes.length));
const el = document.getElementById('hero-quote');
if (!el) return;
const typeSpeed = 40;
const displayMs = 5000;
function typeText(text) {
return new Promise(resolve => {
el.textContent = '';
let i = 0;
function step() {
if (i <= text.length) {
el.textContent = text.slice(0, i);
i++;
setTimeout(step, typeSpeed);
} else {
resolve();
}
}
step();
});
}
let idx = startIdx;
async function loop() {
const text = quotes[idx % quotes.length];
const start = Date.now();
await typeText(text);
const typed = Date.now() - start;
const wait = Math.max(0, displayMs - typed);
await new Promise(r => setTimeout(r, wait));
idx = (idx + 1) % quotes.length;
el.textContent = '';
setTimeout(loop, 120);
}
loop();
})();
</script>
</body>
</html>