Skip to content

Commit f12bebc

Browse files
authored
Website Update
1 parent 0ce9c1b commit f12bebc

3 files changed

Lines changed: 43 additions & 91 deletions

File tree

docs/assets/css/style.css

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,7 +1100,7 @@ a {
11001100
}
11011101

11021102
.js body.hero-ready .hero-text--glow {
1103-
animation: hero-glow-sweep 1100ms cubic-bezier(0.2, 0.88, 0.24, 1) forwards;
1103+
animation: hero-glow-sweep 1140ms cubic-bezier(0.2, 0.88, 0.24, 1) forwards;
11041104
animation-delay: calc(var(--line-index, 0) * 180ms + 260ms);
11051105
}
11061106

@@ -1139,7 +1139,7 @@ a {
11391139
opacity: 0.34;
11401140
}
11411141

1142-
70% {
1142+
76% {
11431143
width: 100%;
11441144
opacity: 0.18;
11451145
filter: blur(4px);
@@ -1278,52 +1278,6 @@ a {
12781278
line-height: 1;
12791279
}
12801280

1281-
.about-operator-word::after {
1282-
content: none;
1283-
}
1284-
1285-
.about-operator-word--glow::after {
1286-
content: attr(data-word);
1287-
position: absolute;
1288-
inset: 0 auto 0 0;
1289-
display: block;
1290-
width: 0;
1291-
overflow: hidden;
1292-
color: var(--hero-fill-color);
1293-
white-space: nowrap;
1294-
opacity: 0;
1295-
filter: blur(10px);
1296-
text-shadow:
1297-
0 0 22px rgba(255, 157, 77, 0.46),
1298-
0 0 18px rgba(89, 109, 255, 0.32);
1299-
pointer-events: none;
1300-
animation: about-operator-glow 1100ms cubic-bezier(0.2, 0.88, 0.24, 1) forwards;
1301-
}
1302-
1303-
@keyframes about-operator-glow {
1304-
0% {
1305-
width: 0;
1306-
opacity: 0;
1307-
filter: blur(12px);
1308-
}
1309-
1310-
18% {
1311-
opacity: 0.34;
1312-
}
1313-
1314-
70% {
1315-
width: 100%;
1316-
opacity: 0.18;
1317-
filter: blur(4px);
1318-
}
1319-
1320-
100% {
1321-
width: 100%;
1322-
opacity: 0;
1323-
filter: blur(0);
1324-
}
1325-
}
1326-
13271281
.discipline-grid {
13281282
display: grid;
13291283
grid-template-columns: repeat(3, minmax(0, 1fr));

docs/assets/js/shell.js

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,19 +1116,14 @@
11161116

11171117
const finalIndex = words.length - 1;
11181118
const transitionDuration = 620;
1119-
const holdDuration = 520;
1119+
const holdDuration = 440;
11201120
const initialHold = 280;
1121-
const finalGlowDelay = 180;
1122-
const timers = [];
11231121
let activeIndex = 0;
11241122
let started = false;
11251123
let metrics = { height: 0, widths: [] };
1126-
1127-
const clearTimers = () => {
1128-
while (timers.length) {
1129-
window.clearTimeout(timers.pop());
1130-
}
1131-
};
1124+
let sequenceFrame = 0;
1125+
let nextStepAt = 0;
1126+
let lastStepAt = 0;
11321127

11331128
const setImmediateTransitions = (enabled) => {
11341129
const value = enabled ? "none" : "";
@@ -1174,16 +1169,34 @@
11741169
}
11751170
};
11761171

1177-
const triggerFinalGlow = () => {
1178-
const finalWord = words[finalIndex];
1179-
finalWord.classList.remove("about-operator-word--glow");
1180-
void finalWord.offsetWidth;
1181-
finalWord.classList.add("about-operator-word--glow");
1182-
timers.push(
1183-
window.setTimeout(() => {
1184-
finalWord.classList.remove("about-operator-word--glow");
1185-
}, 1150)
1186-
);
1172+
const stopSequence = () => {
1173+
window.cancelAnimationFrame(sequenceFrame);
1174+
sequenceFrame = 0;
1175+
};
1176+
1177+
const tickSequence = (now) => {
1178+
if (!started || activeIndex >= finalIndex) {
1179+
sequenceFrame = 0;
1180+
return;
1181+
}
1182+
1183+
if (!nextStepAt) {
1184+
lastStepAt = now;
1185+
nextStepAt = now + initialHold;
1186+
}
1187+
1188+
if (now >= nextStepAt) {
1189+
applyIndex(activeIndex + 1);
1190+
lastStepAt = now;
1191+
nextStepAt = now + transitionDuration + holdDuration;
1192+
1193+
if (activeIndex >= finalIndex) {
1194+
sequenceFrame = 0;
1195+
return;
1196+
}
1197+
}
1198+
1199+
sequenceFrame = window.requestAnimationFrame(tickSequence);
11871200
};
11881201

11891202
const runSequence = () => {
@@ -1201,33 +1214,18 @@
12011214

12021215
updateMetrics();
12031216
applyIndex(0, { immediate: true });
1204-
1205-
let elapsed = initialHold;
1206-
1207-
for (let index = 1; index <= finalIndex; index += 1) {
1208-
const currentIndex = index;
1209-
1210-
timers.push(
1211-
window.setTimeout(() => {
1212-
applyIndex(currentIndex);
1213-
}, elapsed)
1214-
);
1215-
1216-
if (currentIndex === finalIndex) {
1217-
timers.push(
1218-
window.setTimeout(() => {
1219-
triggerFinalGlow();
1220-
}, elapsed + transitionDuration + finalGlowDelay)
1221-
);
1222-
}
1223-
1224-
elapsed += transitionDuration + holdDuration;
1225-
}
1217+
nextStepAt = 0;
1218+
stopSequence();
1219+
sequenceFrame = window.requestAnimationFrame(tickSequence);
12261220
};
12271221

12281222
const refreshLayout = () => {
12291223
updateMetrics();
12301224
applyIndex(started ? activeIndex : 0, { immediate: true });
1225+
1226+
if (started && activeIndex < finalIndex && lastStepAt) {
1227+
nextStepAt = performance.now() + Math.max(140, transitionDuration - (performance.now() - lastStepAt));
1228+
}
12311229
};
12321230

12331231
const settledRefresh = createSettledScheduler(refreshLayout);

docs/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<link rel="preconnect" href="https://fonts.googleapis.com">
99
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1010
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Unbounded:wght@500;700;800&display=swap" rel="stylesheet">
11-
<link rel="stylesheet" href="assets/css/style.css?v=20260408r">
11+
<link rel="stylesheet" href="assets/css/style.css?v=20260408s">
1212

1313
<link rel="icon" type="image/svg+xml" href="favicon.svg">
1414
<link rel="icon" sizes="192x192" href="android-chrome-192x192.png">
@@ -163,6 +163,6 @@ <h2>Open Repositories and Direct Channels</h2>
163163

164164
<div id="footer-slot"></div>
165165

166-
<script src="assets/js/shell.js?v=20260408q" defer></script>
166+
<script src="assets/js/shell.js?v=20260408s" defer></script>
167167
</body>
168168
</html>

0 commit comments

Comments
 (0)