Skip to content

Commit 2144e44

Browse files
committed
deploy: 3b96f9f
1 parent be4e7b9 commit 2144e44

File tree

695 files changed

+111115
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

695 files changed

+111115
-0
lines changed

twisnov/.stamp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fri Dec 5 04:14:39 UTC 2025

twisnov/CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
servo.org

twisnov/CODE_OF_CONDUCT/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<h1 id="code-of-conduct" tabindex="-1">Code of Conduct <a class="header-anchor" href="#code-of-conduct">
2+
<span class="icon hashlink"><i class="fas fa-link"></i></span>
3+
</a></h1>
4+
<p>The Servo Project follows the <a href="https://www.rust-lang.org/policies/code-of-conduct"><strong>Rust Code of Conduct</strong></a>, with the differences below.</p>
5+
<p>Our code of conduct applies to the <a href="https://servo.zulipchat.com/">Servo Zulip channels</a>, <a href="https://github.com/servo">GitHub repositories</a>, and all official Servo venues, rather than the Rust project.</p>
6+
<p>If you are subject to or witness unacceptable behavior, or have any other concerns, please notify one of our designated contacts:</p>
7+
<ul>
8+
<li>Delan Azabani (she/her) <a href="mailto:[email protected]">[email protected]</a></li>
9+
<li>Martin Robinson (he/him) <a href="mailto:[email protected]">[email protected]</a></li>
10+
<li>Manuel Rego Casasnovas (he/him) <a href="mailto:[email protected]">[email protected]</a></li>
11+
</ul>
12+
<p><em>Note: If you modify this file, please keep this file in sync with <a href="https://servo.org/coc/">https://servo.org/coc/</a>.</em></p>

twisnov/about/index.html

Lines changed: 424 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<style>
5+
* {
6+
cursor: none !important;
7+
}
8+
html {
9+
overflow: hidden;
10+
}
11+
body {
12+
--x: 0;
13+
--y: 0;
14+
}
15+
.pointer {
16+
position: absolute;
17+
inset: 0;
18+
background: no-repeat
19+
calc((var(--x) - var(--xHot)) * 1px)
20+
calc((var(--y) - var(--yHot)) * 1px);
21+
--xHot: 0;
22+
--yHot: 0;
23+
}
24+
.pointer.linux {
25+
background-image: url(cursor/linux.png);
26+
--xHot: 8;
27+
--yHot: 1;
28+
}
29+
.pointer.windows {
30+
background-image: url(cursor/windows.png);
31+
--xHot: 0;
32+
--yHot: 0;
33+
}
34+
.pointer.macos {
35+
background-image: url(cursor/macos.png);
36+
--xHot: 3;
37+
--yHot: 0;
38+
}
39+
html {
40+
width: 100%;
41+
height: 100%;
42+
}
43+
body {
44+
width: 100%;
45+
height: 100%;
46+
}
47+
.bg {
48+
position: fixed;
49+
height: 100%;
50+
width: 100%;
51+
background: linear-gradient(-45deg, #f5b23f, #3cc8e7, #d8f931, #26e6b9);
52+
background-size: 400% 400%;
53+
animation: gradient 15s ease infinite;
54+
top: 0;
55+
left: 0;
56+
z-index: -1;
57+
}
58+
@keyframes gradient {
59+
0% {
60+
background-position: 0% 50%;
61+
}
62+
50% {
63+
background-position: 100% 50%;
64+
}
65+
100% {
66+
background-position: 0% 50%;
67+
}
68+
}
69+
.text-container {
70+
position: relative;
71+
display: inline-block;
72+
top: 100px;
73+
left: 40px;
74+
}
75+
.text {
76+
cursor: default;
77+
position: relative;
78+
color: #fff;
79+
line-height: 50px;
80+
font-weight: bold;
81+
font-size: 50px;
82+
font-family: 'Courier New';
83+
user-select: none;
84+
-webkit-user-select: none;
85+
}
86+
.text-bg {
87+
background-color: rgba(0, 0, 0, 0.2);
88+
padding: 5px;
89+
}
90+
.spotlight {
91+
position: fixed;
92+
top: 0;
93+
left: 0;
94+
width: 100%;
95+
height: 100%;
96+
pointer-events: none;
97+
background: radial-gradient(
98+
50px 50px at center center,
99+
transparent,
100+
transparent 100px,
101+
rgba(0, 0, 0, 0.05) 150px
102+
);
103+
opacity: 1;
104+
z-index: 1;
105+
}
106+
.traffic-light-area {
107+
display: block;
108+
height: 30px;
109+
width: 62px;
110+
background: #0000007e;
111+
user-select: none;
112+
position: fixed;
113+
top: 0;
114+
left: 0;
115+
right: 0;
116+
padding-left: 10px;
117+
border-radius: 0 0 5px 0;
118+
}
119+
</style>
120+
</head>
121+
<body>
122+
<!-- <div class="traffic-light-area"></div> -->
123+
<div id="spotlight" class="spotlight"></div>
124+
<div class="text-container">
125+
<span id="text-prefix" class="text">Hello </span>
126+
<span id="text-name" class="text text-bg"></span>
127+
<span id="cursor" class="text">_</span>
128+
</div>
129+
<div class="bg"></div>
130+
<div class="pointer"></div>
131+
<script>
132+
/* Spotlight */
133+
const spotlightEl = document.getElementById('spotlight');
134+
function handleMouseMove(event) {
135+
const { clientX, clientY } = event;
136+
spotlightEl.style =
137+
'background:radial-gradient(50px 50px at ' +
138+
clientX +
139+
'px ' +
140+
clientY +
141+
'px, transparent, transparent 100px, rgba(0,0,0,0.05) 150px)';
142+
document.body.style.setProperty("--x", clientX);
143+
document.body.style.setProperty("--y", clientY);
144+
document.title = `(${clientX},${clientY})`;
145+
}
146+
document.addEventListener('mousemove', handleMouseMove);
147+
addEventListener("resize", () => {
148+
document.title = `${innerWidth}x${innerHeight}`;
149+
});
150+
151+
/* Typing Effect */
152+
async function startCarosel() {
153+
const textNameEl = document.getElementById('text-name');
154+
const texts = ['Tauri.', 'Servo.', 'World!'];
155+
const colors = ['#ffc131', '#3cc8e7', '#ffffff'];
156+
let textIdx = 0;
157+
158+
const pointer = document.querySelector(".pointer");
159+
const platforms = ["windows", "macos", "linux"];
160+
while (true) {
161+
pointer.className = `pointer ${platforms[textIdx]}`;
162+
163+
const text = texts[textIdx];
164+
165+
updateNameColor(textNameEl, colors[textIdx]);
166+
await type(texts[textIdx], textNameEl);
167+
let blinkTimerId = blinkCursor();
168+
await sleep(3200);
169+
cleanCursor(blinkTimerId);
170+
await backspace(textNameEl);
171+
await sleep(500);
172+
173+
textIdx = (textIdx + 1) % texts.length;
174+
}
175+
}
176+
177+
async function type(text, el, delay = 100) {
178+
el.classList.add('text-bg');
179+
for (const ch of text) {
180+
await sleep(delay);
181+
el.innerHTML += ch;
182+
}
183+
}
184+
185+
async function backspace(el) {
186+
let text = el.innerHTML;
187+
while (text.length > 0) {
188+
await sleep(60);
189+
text = text.slice(0, -1);
190+
el.innerHTML = text;
191+
}
192+
el.classList.remove('text-bg');
193+
}
194+
195+
function sleep(ms) {
196+
return new Promise((resolve) => setTimeout(resolve, ms));
197+
}
198+
199+
function blinkCursor() {
200+
const cursor = document.getElementById('cursor');
201+
return setInterval(() => {
202+
if (cursor.innerHTML === '_') {
203+
cursor.innerHTML = '';
204+
} else {
205+
cursor.innerHTML = '_';
206+
}
207+
}, 500);
208+
}
209+
210+
function cleanCursor(timerId) {
211+
clearTimeout(timerId);
212+
const cursor = document.getElementById('cursor');
213+
cursor.innerHTML = '_';
214+
}
215+
216+
function updateNameColor(el, color) {
217+
el.style.color = color;
218+
}
219+
220+
startCarosel();
221+
</script>
222+
</body>
223+
</html>

0 commit comments

Comments
 (0)